Desidero inviare e-mail da Microsoft Access senza operatore tramite VBA. Comprendo che il metodo integrato "SendObject" utilizza MAPI che indica prompt di sicurezza e qualcosa come Outlook configurato. Poiché desidero utilizzare l'Utilità di pianificazione per avviare diversi report, mi sto allontanando da MAPI e preferirei un'altra soluzione. Non un'applicazione per la spedizione ma solo in-house. Idee?utilizzando Access e VBA senza MAPI
risposta
Avrete bisogno di un server SMTP che vi permetterà di inviare e-mail. Quindi è necessario utilizzare l'oggetto messaggio CDO.
Potresti trovare lo Access EMail FAQ di Tony Toews a portata di mano.
Ecco il codice di test che ha funzionato per me con CDO e gmail.
Sub mtest()
Dim cdoConfig
Dim msgOne
Set cdoConfig = CreateObject("CDO.Configuration")
With cdoConfig.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = 465
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "gmailname"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "yourpw"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Update
End With
Set msgOne = CreateObject("CDO.Message")
Set msgOne.Configuration = cdoConfig
msgOne.To = "[email protected]"
msgOne.From = "[email protected]"
msgOne.Subject = "Test email"
msgOne.TextBody = "It works just fine"
msgOne.send
End Sub
state cercando codice che funzioni perfettamente con gmail. Ho incasinato la configurazione smtpauthenticate. Grazie! – killerbarney
Lo faccio in questo modo, nota, è necessario disporre di Outlook installato per farlo funzionare.
Sub btnSendEmail_Click()
Dim OutApp As Object
Dim OutMail As Object
Application.ScreenUpdating = False
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
strBody = "<html><head></head><body>"
strBody = strBody & "Your message goes here"
strBody = strBody & "</body></html>"
Set OutMail = OutApp.CreateItem(0)
OutMail.To = "[email protected]"
OutMail.BCC = "[email protected]"
OutMail.Subject = "Test message"
OutMail.HTMLBody = strBody
OutMail.Send 'Send | Display
Set OutMail = Nothing
End Sub
Non volevo usare Outlook perché questo sarebbe in esecuzione in modo automatico in un account senza Outlook installato. – Knox
Outlook Redenzione è gratuito e molto usato: http://www.dimastr.com/redemption/
E 'molto molto vicino al modello a oggetti di Outlook originale, in modo che la curva di apprendimento è la torta :)
Grazie per il suggerimento. – Knox
ho pensato CDO è venuto con IIS - Lo uso sul client? Per il server SMTP potrei usare qualcosa come gmail? – Knox
Sì, usarlo nel VBA. Non ho trovato nulla che limiti questo a IIS o allo scambio, ma potresti avere problemi con il tuo provider. Non ne so abbastanza su Gmail. Sto indovinando se ti permettono di connettersi con Outlook tramite SMTP (so che non vuoi farlo con la tua applicazione, ma sarebbe un buon test di connessione.). – JeffO
Stavo davvero usando gmail come esempio; Penso che usino una porta insolita o qualcosa del genere. Darò una prova a CDO. – Knox