在Office 365中从Excel创建Outlook邮件草稿

时间:2016-11-18 08:50:17

标签: excel vba outlook office365 mailitem

我在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 error message

我注意到Outlook属性会在"显示名称"中显示电子邮件地址。仅字段而不是"电子邮件地址"字段:

Outlook properties

正确处理手动创建的邮件将在"显示名称"中显示电子邮件地址。字段以及"电子邮件地址"字段和显示" SMTP"在"电子邮件类型"字段:

Outlook properties

我已经尝试了几项措施,包括清除自动填充缓存无济于事。在Excel / VBA中我可以做些什么来正确设置电子邮件地址吗?或者它是否必须修复服务器端问题/设置?

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案:

Dim recipient As Outlook.recipient

For Each recipient In objOLMail.Recipients
    recipient.Resolve
Next

objOLMail.Save

实际上相当简单。在某种程度上,事情的设置方式我现在需要明确地解决每个收件人,这在以前是不必要的。