WinTricks Forum

WinTricks Forum (http://forum.wintricks.it/index.php)
-   Office suite (http://forum.wintricks.it/forumdisplay.php?f=37)
-   -   Inviare un pdf via Email in vba (http://forum.wintricks.it/showthread.php?t=166205)

A.Maurizio 22-04-2018 12.00.51

Inviare un pdf via Email in vba
 
Ciao a Tutti mi chiamo Maurizio
E il mio Problema e questo :
1 ) In VBA ho creato una procedura che mi preleva nella Cella (J1) un indirizzo E.mail e mi apre la pagina di posta elettronica , ma non strettamente legata ad outlook.
2 ) Poi ho creato una seconda procedura che mi preleva i dati dal Foglio 1 a partire dalla cella (A11:P23) e mi crea il file in PDF e me lo inserisce nella Sotto Cartella del mio documento di lavoro.
3 ) Ora quello che vorrei ottenere io : Sarebbe quello di far capire al programma che deve allegare il foglio pdf alla pagina E-mail Aperta.
Tutto qui.
C'è qualcuno di voi che sia in grado di darmi una mano in merito Grazie .
Il Link Per scaricare il mio programma di prova e questo : https://app.box.com/s/zidy0m003eejjnxqd0q8k2bx9lq4srs
Saluti e Buon Fine settimana a Tutti da A.Maurizio

LoryOne 22-04-2018 20.08.48

Rif: Inviare un pdf via Email in vba
 
Il file allegato deve essere prima codificato; Si usa base64 di solito
http://www.vbforums.com/showthread.p...g-and-Decoding
Dopodichè, lo puoi allegare alla mail.

ps: Non apro il tuo link

Alexsandra 26-04-2018 21.38.40

Rif: Inviare un pdf via Email in vba
 
A tal proposito ci sono 2 soluzioni nel forum.
1) nel corso vba usando CDO
http://forum.wintricks.it/showpost.p...7&postcount=49
2) nel laboratorio di vba usando Bullzip
http://forum.wintricks.it/showthread.php?t=155317

per quello che vuoi fare guardati il codice vba delle 2 soluzioni

LoryOne 02-05-2018 11.44.27

Rif: Inviare un pdf via Email in vba
 
Fermo restando che non ho nulla in contrario alle soluzioni proposte da Alex, credo che l'approccio migliore in qualsiasi situazione sia quello di valutare la possibilità di evitare il più possibile di appoggiarsi a componentistica esterna, avendo a disposizione un linguaggio sufficientemente completo per svolgere il compito specifico, la cui unica difficoltà costituita dalla codifica base64, è già stata superata e proposta quale soluzione da implementare nell'ambito applicativo indicato dall'utente A.Maurizio; Spedire una mail, alla fine, si rivela piuttosto semplice.
1 - Prendiamo in considerazione il protocollo classico SMTP (es: https://en.wikipedia.org/wiki/Simple...nsfer_Protocol),
2 - ricerchiamo in internet come spedire una mail con telnet (es: https://practical365.com/exchange-se...ail-via-telnet) e
3 - facciamo delle prove d'inoltro seguendo la guida, prendendo in considerazione il server mail che usiamo di solito.
La prima cosa che salta agli occhi è che il server risponde ai comandi impartiti attraverso codici, quindi capire i codici significa capire se si sta seguendo la corretta procedura.
La seconda cosa che salta agli occhi è che una volta autenticati e specificati il mittente (MAIL FROM: ) ed il destinatario (RCPT TO: ) il messaggio segue l'impartizione del comando DATA seguito da '.' come terminatore.
La terza cosa che salta agli occhi è che, una volta effettuate le prove di spedizione via telnet, quello che si ottiene è l'inoltro di semplice testo, ma serve spedire anche uno o più allegati !
Come fare ?
Ai più attenti non sarà certo sfuggito il fatto che tutto il contenuto di una mail, sia essa testuale o html è compreso tra DATA e '.'.
La domanda che sorge spontanea è "Come si fa a scindere un allegato dal testo" ?
La soluzione è altrettanto semplice: Salviamo in .eml una mail d'inoltro comprensiva di allegato dal nostro client/webclient e studiamone il contenuto.
Ci accorgeremo di una cosa del genere: "Content-type: multipart/mixed": Che roba è ?
Effettuando una veloce ricerca su internet, troviamo che la direttiva fa parte di MIME (https://en.wikipedia.org/wiki/MIME)
Molto bene, allora cio che dobbiamo fare è mettere insieme la parte telnet (SMTP) di cui abbiamo capito il funzionamento e MIME per modificare opportunamente il messaggio che contenga anche l'allegato in base64.
Ora, a lato pratico, è necessario scrivere codice (https://www.developerfusion.com/code...nsock-and-pop3) che spedisca e riceva via TCP, ma ahimè VBA ne è sprovvisto.
Il modo più semplice per ovviare a tale mancanza è fare ricorso agli OCX (es: https://social.msdn.microsoft.com/Fo...into-vba-excel), ma c'è un problema: Il foglio di Excel serve solo a noi o lo dobbiamo distribuire ?
Nel primo caso il problema non si porrebbe, ma nel secondo si, poichè una volta creato il riferimento al componente OCX , esso dovrebbe essere presente anche sul pc del destinatario, pena l'impossibilità di sfruttare a pieno il foglio per la parte relativa all'inoltro delle mail.
Da una rapida ricerca in internet, si scopre che il componente OCX winsock fa uso della libreria di sistema wininet.dll (https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx) che è parte del sistema Windows e non costituisce parte aggiuntiva.
A completamento della procedura, quindi, bisognerebbe riscrivere il codice del componente OCX facendo accesso diretto alle API di sistema (https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx), ma cio non costituisce problema, in quanto attraverso "Declare Function ..." VBA lo consente.


Orario GMT +2. Ora sono le: 14.06.11.

vBulletin 3.8.6 - Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.