correo electrónico utilizando Access y VBA sin MAPI
-
12-09-2019 - |
Pregunta
Me gustaría enviar correo electrónico desde Microsoft Access desatendida con VBA. Yo entiendo que el método “EnviarObjeto” built-in utiliza mensajes de seguridad significado MAPI y algo así como Outlook configurado. Ya que quiero utilizar el programador de tareas para poner en marcha diferentes informes, me estoy inclinando lejos de MAPI y preferiría alguna otra solución. No es una aplicación para el envío, pero sólo de forma interna. Ideas?
Solución
Usted necesitará un servidor SMTP que le permitirá enviar correo electrónico. Luego hay que utilizar el objeto de mensaje CDO.
Otros consejos
Aquí está el código de prueba que trabajó para mí con CDO y 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 = "target@target.com"
msgOne.From = "I@dontThinkThisIsUsed.com"
msgOne.Subject = "Test email"
msgOne.TextBody = "It works just fine"
msgOne.send
End Sub
Usted puede encontrar de Tony Toews acceso al correo electrónico FAQ práctico.
lo hago de esta manera, nota, debe tener Outlook instalado para que funcione.
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 = "name@example.com"
OutMail.BCC = "bcc@example.com"
OutMail.Subject = "Test message"
OutMail.HTMLBody = strBody
OutMail.Send 'Send | Display
Set OutMail = Nothing
End Sub
La redención de Outlook es gratuito y muy ampliamente utilizado: http://www.dimastr.com/redemption/
Es muy, muy cerca del modelo de objetos de Outlook original, por lo que la curva de aprendizaje es pastel:)