Newsgroup: it.comp.lang.visual-basic
Titolo: vb6 e outlook

buongiorno,è da molto che non programmo in vb6,perdonatemi per la mia richiesta:in una form ho scritto un codice che tramite la pressione di un commandbutton mi esegue una ricerca ed invia la stessa email a tutti i destinatari. Il codice va bene : fa la ricerca,apre outlook,mi mostra la email ed i destinatari e mi da la possibilita di inviare la email,solo che questa viene spedita solo se io riapro outlook e mi collego con il mio account. come posso evitare questo ultimo passaggio ? questo è il codice :
Private Sub Command1_Click()
Dim OutApp As Object
Dim OutMail As Object
 
Dim destinatari As String
 
 
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim database As String
 
database = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
database = database & App.Path & "\" & "ospiti.mdb"
 
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
 
cn.Open database
 
rs.Open "Select EMAIL from ANAGRAFICA where MID (DATANASCITATESTO,1,5) = '" & Text1.Text & "'", cn, 3, 3#
 
 
rs.MoveFirst
Do Until rs.EOF
destinatari = (destinatari & ";") & rs.Fields("EMAIL")
rs.MoveNext
 
 
Loop
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = ""
.CC = destinatari
 
.Display
End With
 
Set OutMail = Nothing
Set OutApp = Nothing
 
 
End Sub

 ultimo passaggio ? questo č il codice :
 
Non saprei ma non mi vorrei mai vincolare alla presenza di Outlook in un
programma, almeno che non ci sia una cosa specifica.
In .NET trovi decine di esempi e librerie per mandare una mail dove devi
solo i dargli i parametri SMTP.
 
 
-- 
Freccia@Bulldozer63 :D


L'invio email e' una funzionalita' che dipende fortemente da come e' 
preparato il pc sul quale si sta lavorando
Ti consiglio di slegarti dal client attualmente installato
Magari su un pc hai Outlook, su altro hai Thunderbird e cosi via, e 
quindi se realizzi tutto 'cablato' su Outlook, poi capita che se non ti 
funziona piu' l'invio email
Per sganciarti dal client email installato, e garantirti la perfetta 
funzionalita' su tutte le installazioni che avrai, puoi usare Swithmail 
oppure Blat
Sono dei programmi che avvii a riga di comando e puoi inviare messaggi a 
chi vuoi, anche loggando eventuali errori che potrai poi leggere
Destinatari multipli, allegati, log errori, testo messaggio anche in 
html, fanno di tutto


Grazie ma penso di aver risolto con queste linee di programma :
 
Dim MailDestinatario As String
Dim IDTuoAccountGmail As String
Dim PasswordTuoAccountGmail As String
Dim Oggetto As String
Dim CorpoMessaggio As String
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
 
schema = "
http://schemas.microsoft.com/cdo/configuration/
"
Flds.Item(schema & "sendusing") = 2
Flds.Item(schema & "smtpserver") = "
smtp.gmail.com
"
Flds.Item(schema & "smtpserverport") = 465
Flds.Item(schema & "smtpauthenticate") = 1
Flds.Item(schema & "sendusername") = "tuaemail"
Flds.Item(schema & "sendpassword") = "password"  'bisogna generare una password per applicazione in google,io la password l'ho
                                                         'chiamata vb6
 
Flds.Item(schema & "smtpusessl") = 1
Flds.Update
 
With iMsg
    .to = destinatari
    .From = "tuaemail"
    ''.Sender = ""
    '.ReplyTo = ""
    .Subject = Oggetto
 .HTMLBody = CorpoMessaggio
 
    Set .Configuration = iConf
 
    sendemailgmail = .Send
 
End With
 
Set iMsg = Nothing
Set iConf = Nothing
Set Flds = Nothing
 
Aggiungo queste linee alle mie precedenti,opportunamente modificate, e tutto funziona; solo che i destinatari vedono anche gli indirizzi email degli altri,non so come risolvere.


Quel 'destinatari' mettilo su .ccn  al posto del  .to
Fossi in te, meterei l'invio delle email dentro al ciclo che raccoglie i 
destinatari, e manderei un'email per ognuno
Se qualcuno rispondesse, avresti la possibilita' di comunicare con 
maggior precisione solamente con illo
 


Si grazie,cosi ho fatto.