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
Necesitará un servidor SMTP que le permita enviar correos electrónicos. Entonces necesita usar el objeto de mensaje CDO.
Puede encontrar el Access EMail FAQ de Tony Toews a mano.
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
estado buscando un código que funcione perfectamente con gmail. Me equivoqué en la configuración de smtpauthenticate. ¡Gracias! – killerbarney
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
No quería usar Outlook porque esto se ejecutará desatendido posiblemente en una cuenta sin perspectiva instalada. – Knox
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 :)
Gracias por la sugerencia. – Knox
- 1. MS Access sin VBA?
- 2. MS Access envía un correo electrónico (no desde Outlook o el correo electrónico del usuario)
- 3. ComboBox.value en Access VBA
- 4. recuperar correo electrónico usando C#?
- 5. recibir correo electrónico usando matlab
- 6. Recibir correo electrónico usando PHP
- 7. Enviar correo electrónico con attchement usando System.Net.Mail
- 8. Correo de Java: envío de correo electrónico sin SMTP
- 9. de lectura de correo electrónico sin Perspectiva aplicación abierta
- 10. MS-Access, VBA y manejo de errores
- 11. Lanzamiento de aplicación de correo electrónico (MAPI) desde C# (con datos adjuntos)
- 12. Usando Android Intent.ACTION_SEND para enviar correo electrónico
- 13. Sin función max (x, y) en Access
- 14. Validación de correo electrónico TSQL (sin regex)
- 15. Enviando correo electrónico usando email.mime.multipart en Python
- 16. Es posible enviar un correo electrónico mediante programación sin utilizar ninguna cuenta de correo electrónico real
- 17. VBA + Hilos en MS Access
- 18. envío de correo electrónico masivo usando PHP
- 19. ¿Cómo puedo establecer "Importancia alta" en el correo electrónico enviado usando VBA?
- 20. Enviando correo electrónico usando smtp y estableciendo el id-mensaje
- 21. Enviando correo electrónico usando Zend Framework y PHP
- 22. ¿Cómo enviar un correo electrónico usando Zend_Mail, sendmail y localhost?
- 23. Enviando un correo electrónico HTML usando Swift
- 24. Enviando correo electrónico HTML usando Python
- 25. Enviando correo electrónico usando GMail en android
- 26. Escribir mensajes de correo electrónico a archivos planos en Outlook con VBA
- 27. "El correo electrónico no puede estar en blanco" Idear usando nombre de usuario o correo electrónico
- 28. Prueba de envío de correo electrónico sin servidor de correo electrónico
- 29. Cómo enviar correo en Windows (que no sea MAPI)
- 30. Enviar correo electrónico - Cocoa
pensé CDO vino con IIS - Lo uso en el cliente? Para el servidor SMTP, ¿podría usar algo como gmail? – Knox
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
Realmente estaba usando gmail como ejemplo; Creo que usan un puerto inusual o algo así. Le daré una oportunidad a CDO. – Knox