Я хочу отправлять электронную почту из Microsoft Access без присмотра с помощью VBA. Я понимаю, что встроенный метод «SendObject» использует MAPI, что означает запросы безопасности и что-то вроде настроенного Outlook. Поскольку я хочу использовать планировщик задач для запуска различных отчетов, я отклоняюсь от MAPI и предпочитаю какое-то другое решение. Не заявка на отгрузку, а собственноручно. Идеи?
электронная почта с использованием Access и VBA без MAPI
Ответы (5)
Вам понадобится SMTP-сервер, который позволит вам отправлять электронную почту. Затем вам нужно использовать объект сообщения CDO.
person
JeffO
schedule
20.04.2009
Я думал, что CDO идет с IIS - я использую его на клиенте? Могу ли я использовать что-то вроде Gmail для SMTP-сервера?
- person Knox; 20.04.2009
Да, используйте его в VBA. Я не нашел ничего, что ограничивало бы это IIS или даже Exchange, но у вас могут быть проблемы с вашим провайдером. Я недостаточно знаю о Gmail. Я предполагаю, позволят ли они вам подключиться к Outlook через SMTP (я знаю, что вы не хотите делать это со своим приложением, но это было бы хорошим тестом подключения).
- person JeffO; 21.04.2009
Я действительно использовал Gmail в качестве примера; Я думаю, они используют необычный порт или что-то в этом роде. Я попробую CDO.
- person Knox; 21.04.2009
Вот тестовый код, который у меня работал с CDO и 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
person
Knox
schedule
21.04.2009
искал код, который отлично работает с Gmail. Я испортил конфигурацию smtpauthenticate. Благодарность!
- person killerbarney; 26.11.2011
Возможно, вам пригодится Доступ к часто задаваемым вопросам по электронной почте Тони Тэйвса.
person
David-W-Fenton
schedule
20.04.2009
Я проголосовал против, потому что ответ был заглушкой, а страница, на которую вы ссылаетесь, имеет нерабочий код и некоторые советы, которые не нацелены на решения (даже в 2009 году).
- person Henrik Erlandsson; 15.03.2019
Я делаю это так, обратите внимание, у вас должен быть установлен Outlook, чтобы он работал.
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
person
Ron
schedule
21.04.2009
Я не хотел использовать Outlook, потому что он будет работать автоматически, возможно, в учетной записи без установленного Outlook.
- person Knox; 22.04.2009
Outlook Redemption является бесплатным и очень широко используемым: http://www.dimastr.com/redemption/
Это очень близко к исходной объектной модели Outlook, так что кривая обучения проста :)
person
Oorang
schedule
11.06.2009