2009-04-20 36 views
5

Me gustaría enviar correos electrónicos de Microsoft Access sin supervisión usando VBA. Entiendo que el método integrado "SendObject" usa MAPI, lo que significa indicaciones de seguridad y algo así como Outlook configurado. Como quiero utilizar el Programador de tareas para dar inicio a diferentes informes, me estoy alejando de MAPI y preferiría otra solución. No es una aplicación para envío, sino solo interna. Ideas?correo electrónico usando Access y VBA sin MAPI

Respuesta

1

Necesitará un servidor SMTP que le permita enviar correos electrónicos. Entonces necesita usar el objeto de mensaje CDO.

+0

pensé CDO vino con IIS - Lo uso en el cliente? Para el servidor SMTP, ¿podría usar algo como gmail? – Knox

+1

Sí, úselo en el VBA. No he encontrado nada que limite esto a IIS o incluso Exchange, pero puede tener problemas con su proveedor. No sé lo suficiente sobre gmail. Supongo que si te permiten conectarte con Outlook a través de SMTP (sé que no quieres hacer esto con tu aplicación, pero sería una buena prueba de conexión). – JeffO

+0

Realmente estaba usando gmail como ejemplo; Creo que usan un puerto inusual o algo así. Le daré una oportunidad a CDO. – Knox

5

Aquí está el código de prueba que funcionó 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 = "[email protected]" 
msgOne.From = "[email protected]" 
msgOne.Subject = "Test email" 
msgOne.TextBody = "It works just fine" 
msgOne.send 
End Sub 
+0

estado buscando un código que funcione perfectamente con gmail. Me equivoqué en la configuración de smtpauthenticate. ¡Gracias! – killerbarney

1

Lo hago de esta manera, tenga en cuenta que debe tener instalado Outlook 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 = "[email protected]" 
    OutMail.BCC = "[email protected]" 
    OutMail.Subject = "Test message" 
    OutMail.HTMLBody = strBody 


    OutMail.Send 'Send | Display 
    Set OutMail = Nothing 
End Sub 
+0

No quería usar Outlook porque esto se ejecutará desatendido posiblemente en una cuenta sin perspectiva instalada. – Knox

1

redención 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 un pastel :)

+0

Gracias por la sugerencia. – Knox

Cuestiones relacionadas