2016-11-18 118 views
0

我在Excel中创建了Outlook邮件草稿,在Excel中有一个现有的VBA代码片段。请考虑以下代码,该代码正常工作并允许在Outlook中手动发送邮件后创建:在Office 365中从Excel创建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中,我可以做些什么来正确设置电子邮件地址?还是它是一个服务器端问题/设置,必须解决?

回答

0

我终于找到了自己的解决方案:其实

Dim recipient As Outlook.recipient 

For Each recipient In objOLMail.Recipients 
    recipient.Resolve 
Next 

objOLMail.Save 

相当简单。不知何故,事情的设置方式我现在需要明确解决每个收件人,这是以前没有必要的。

相关问题