электронная почта с использованием Access и VBA без MAPI
Я хотел бы отправить электронную почту из Microsoft Access unattended с помощью VBA. Я понимаю, что встроенный метод "SendObject" использует MAPI, означающий подсказки безопасности и что-то вроде настроенного Outlook. Поскольку я хочу использовать планировщик задач для запуска различных отчетов, я отклоняюсь от MAPI и предпочел бы какое-то другое решение. Не заявка на доставку, а просто внутри компании. Идеи?
5 ответов:
Вам понадобится SMTP-сервер, который позволит вам отправлять электронную почту. Затем необходимо использовать объект сообщения CDO.
Вот тестовый код, который работал для меня с 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 = "target@target.com" msgOne.From = "I@dontThinkThisIsUsed.com" msgOne.Subject = "Test email" msgOne.TextBody = "It works just fine" msgOne.send End Sub
Вы можете найти Тони Toews Access EMail FAQ удобным.
Я делаю это таким образом, обратите внимание, у вас должен быть установлен 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 = "name@example.com" OutMail.BCC = "bcc@example.com" OutMail.Subject = "Test message" OutMail.HTMLBody = strBody OutMail.Send 'Send | Display Set OutMail = Nothing End Sub
Outlook Redemption является бесплатным и очень широко используется: http://www.dimastr.com/redemption/
Он очень близок к исходной объектной модели outlook, поэтому кривая обучения-это торт:)