在 Office 365 中从 Excel 创建 Outlook 邮件草稿
Creating Outlook Mail Drafts from Excel in Office 365
我在 Excel 中有一个现有的 VBA 代码片段,我们用于在 Office 2013 中创建 Outlook 邮件草稿。考虑以下代码,它运行良好并允许在 Outlook 中手动发送邮件创建后:
Dim objOLOutlook As New Outlook.Application
Dim objOLMail As Outlook.MailItem
Set objOLMail = objOLOutlook.CreateItem(olMailItem)
objOLMail.SentOnBehalfOfName = WsMtrx.Cells(2, 2).Value
objOLMail.To = .Cells(i, 2).Value
objOLMail.CC = .Cells(i, 3).Value
objOLMail.Sensitivity = WsMtrx.Cells(3, 2).Value
objOLMail.Importance = WsMtrx.Cells(4, 2).Value
objOLMail.Subject = dicHtmlText.Item(.Cells(i, 6).Value & "Subject")
objOLMail.BodyFormat = olFormatPlain
objOLMail.HTMLBody = getHtmlText(.Cells(i, 6).Value, .Cells(i, 5).Value, .Cells(i, 4).Value, .Cells(i, 10).Value, i, arrSignatur)
objOLMail.Save
现在我们已经切换到 Office 365(云中的 Exchange 服务器),虽然相同的代码仍然可以创建邮件,但发送邮件会导致错误:
我注意到 Outlook 属性将仅在 "display name" 字段而不是 "e-mail address" 字段中显示 e-mail 地址:
而正常工作的手动创建的邮件将在 "display name" 字段以及 "e-mail address" 字段中显示 e-mail 地址,并在 [=36] 中显示 "SMTP" =] 字段:
我已经尝试了几种方法,包括清除自动完成缓存,但均无济于事。我可以在 Excel/VBA 中做些什么来正确设置 e-mail 地址吗?还是服务器端 issue/setting 必须修复?
我终于自己找到了解决方案:
Dim recipient As Outlook.recipient
For Each recipient In objOLMail.Recipients
recipient.Resolve
Next
objOLMail.Save
其实很简单。不知何故,事情的设置方式我现在需要明确解析每个收件人,这在以前是不必要的。
我在 Excel 中有一个现有的 VBA 代码片段,我们用于在 Office 2013 中创建 Outlook 邮件草稿。考虑以下代码,它运行良好并允许在 Outlook 中手动发送邮件创建后:
Dim objOLOutlook As New Outlook.Application
Dim objOLMail As Outlook.MailItem
Set objOLMail = objOLOutlook.CreateItem(olMailItem)
objOLMail.SentOnBehalfOfName = WsMtrx.Cells(2, 2).Value
objOLMail.To = .Cells(i, 2).Value
objOLMail.CC = .Cells(i, 3).Value
objOLMail.Sensitivity = WsMtrx.Cells(3, 2).Value
objOLMail.Importance = WsMtrx.Cells(4, 2).Value
objOLMail.Subject = dicHtmlText.Item(.Cells(i, 6).Value & "Subject")
objOLMail.BodyFormat = olFormatPlain
objOLMail.HTMLBody = getHtmlText(.Cells(i, 6).Value, .Cells(i, 5).Value, .Cells(i, 4).Value, .Cells(i, 10).Value, i, arrSignatur)
objOLMail.Save
现在我们已经切换到 Office 365(云中的 Exchange 服务器),虽然相同的代码仍然可以创建邮件,但发送邮件会导致错误:
我注意到 Outlook 属性将仅在 "display name" 字段而不是 "e-mail address" 字段中显示 e-mail 地址:
而正常工作的手动创建的邮件将在 "display name" 字段以及 "e-mail address" 字段中显示 e-mail 地址,并在 [=36] 中显示 "SMTP" =] 字段:
我已经尝试了几种方法,包括清除自动完成缓存,但均无济于事。我可以在 Excel/VBA 中做些什么来正确设置 e-mail 地址吗?还是服务器端 issue/setting 必须修复?
我终于自己找到了解决方案:
Dim recipient As Outlook.recipient
For Each recipient In objOLMail.Recipients
recipient.Resolve
Next
objOLMail.Save
其实很简单。不知何故,事情的设置方式我现在需要明确解析每个收件人,这在以前是不必要的。