Post by Alessandro BaraldiPost by MarziaC'è nessuno che sia in grado di dirmi come si possa inviare una mail tramite
macro invia oggetto ad una lista di indirizzi E-Mail presenti in un campo
query?
Grazie
Marzia
Marzia mi pare che l'argomento sia stato aperto in un'altro 3D o
sbaglio...?
Partiamo dal chiarirti che non puoi fare nulla con una MACRO, ma devi
studiarti VBA, questo è il motivo per il quale forse il 3D precedente
è stato interrotto....
1) Che cosa vuoi inviare la Mail...? Intendo con che tecnologia
2) Che impatto deve dare all'utente, deve accorgersene ed interagire
con la Mail da inviare o deve essere una Mail diretta autocomposta...?
3) Devi memorizzare la Mail inviata o non ti serve
4) Gli indirizzi devono essere tutti visibili a tutti o no...?(in
questo caso si usa il BCC o CCN)
5) Ricorda che nessun programma deve inviare mail senza che l'utente ne
sia a conoscenza.
Queste domande sono molto legate in quano condizionano sull'uso del
componente migliore da scegliere...!
Per ora posso suggerirti un Demo che più o meno fà quello che
dici...(forse è un pò complesso
se sei digiuna di VBA, ma ti dà modo per studiarci sopra...)
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=258
Nel demo il cuore è il modulo di classe, e se impari ad usarlo ti
accorgerai che passargli i dati dalla tua Query sarà semplice...!
Ciao
@Alex
Grazie Alessandro delle precisazioni, ora anche il 3D precedente è più
chiaro.
Ho visto l'esempio che mi proponi, bello complimenti, avrò bisogno di 10
anni luce per riuscire a fare una cosa del genere da sola :-)
Tornando alla mia domanda Io ho bisogno di una cosa estremamente più
Come spiegato nel 3D precedente utilizzo delle macro (perchè di VBA come
avrai capito sono totalmente nulla) invia oggetto per inviare messaggi di
posta ad un indirizzo
presente in un controllo maschera con una cosa del genere
=[Forms]![MiaMaschera]![MioControllo]
(quindi posso scegliere tra To; Cc;Ccn) per intenderci ho 3 pulsanti
distinti per 3 macro distinte.
La macro mi permette quindi di aprire automaticamente una finestra nuovo
messaggio di Outlook Express e di inserire l'indirizzo rispettivamente in
To, oppure Cc oppure Ccn. Poi aggiungo oggetto e testo da Outlook. L'utente
quindi è perfettamante consapevole di inviare una mail e, copia del
messaggio rimane naturalmente in posta inviata.
Ora ho bisogno di fare la stessa per inviare la stessa Mail a più indirizzi
che sono presenti su un campo query opportunamente già filtrata. In questo
caso la mail dovrà essere inviata a tutti come Ccn. Devo solo passare ad un
nuovo messaggio di Outlook un elenco di indirizzi presenti su query. Forse
questo da macro si può fare? E se no il codice che mi hai passato nel 3D
precedente doveva servire proprio a questo vero? Recuperare tutti i dati
della query per poi passarli ad un programma di posta. Ma come per il mio
caso?
Ciao
Marzia
I codice che ti ho scritto se non ricordo male cicla il Recordset,
quello che devi fare è comporre adeguatamente la stringa con la
sequenza dei destinatari con il segno di separazione ;
Ora per inviarla con Express purtroppo come ti dicevo devi abbandonare
le macro...!
In questo caso puoi usare ShellExecute che aprirà di Default il
Brovser di Posta...!
Metti il codice seguente in un Modulo:
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As
String, ByVal nShowCmd As Long) As Long
Const SW_SHOWNORMAL = 1
Public Sub SendMail(frm as Access.Form, _
Optional ByVal sTo As String = "Destinatario di
Default", _
Optional ByVal CC As String = "", _
Optional ByVal BCC As String = "", _
Optional ByVal Subject As String = "", _
Optional ByVal Body As String = "", _
Optional ByVal Attachment As String = "")
Dim sMailThis As String
Dim sSep As String
sSep = "?"
sMailThis = "mailto:" & sTo
If CC <> "" Then
sMailThis = sMailThis & sSep & "CC=" & CC
sSep = "&"
End If
If BCC <> "" Then
sMailThis = sMailThis & sSep & "BCC=" & BCC
sSep = "&"
End If
If Subject <> "" Then
sMailThis = sMailThis & sSep & "Subject=" & Subject
sSep = "&"
End If
If Body <> "" Then
sMailThis = sMailThis & sSep & "Body=" & Body
sSep = "&"
End If
If Attachment <> "" Then
sMailThis = sMailThis & sSep & "Attachment=""" & Attachment &
""""
sSep = "&"
End If
If sMailThis <> "mailto:" Then
Call ShellExecute(frm.hwnd, "open", sMailThis, _
vbNullString, vbNullString, SW_SHOWNORMAL)
End If
End Sub
Ora dopo aver composto la stringa con i destinatari(vedi il codice già
postato) la passi alla funzione che ti ho appena passato al parametro
BCC, come primo parametro nella funzione è indicato Destinatario di
Default, puoi mettere il tuo indirizzo in questo campo in modo da
riceverne una copia...!
La funzione dovrai chiamarla così:
SendMail Me, _
"***@libero.it", _
, _
"***@libero.it;***@libero.it;terzo....",
_
"Oggetto della Mail" , _
"Corpo della mail nel caso sia Semiautomatico", _
"C:\Allegato.Doc"
Ciao
@Alex