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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top