2009-04-20 9 views
5

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

1

Avrete bisogno di un server SMTP che vi permetterà di inviare e-mail. Quindi è necessario utilizzare l'oggetto messaggio CDO.

+0

ho pensato CDO è venuto con IIS - Lo uso sul client? Per il server SMTP potrei usare qualcosa come gmail? – Knox

+1

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

+0

Stavo davvero usando gmail come esempio; Penso che usino una porta insolita o qualcosa del genere. Darò una prova a CDO. – Knox

5

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 
+0

state cercando codice che funzioni perfettamente con gmail. Ho incasinato la configurazione smtpauthenticate. Grazie! – killerbarney

1

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 
+0

Non volevo usare Outlook perché questo sarebbe in esecuzione in modo automatico in un account senza Outlook installato. – Knox

1

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 :)

+0

Grazie per il suggerimento. – Knox