【问题标题】:Creating Outlook Mail Drafts from Excel in Office 365在 Office 365 中从 Excel 创建 Outlook 邮件草稿
【发布时间】:2017-04-02 01:13:31
【问题描述】:

我在 Excel 中有一个现有的 VBA 代码 sn-p,我们用于在 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 属性只会在“显示名称”字段中显示电子邮件地址,而不是“电子邮件地址”字段:

而正常工作的手动创建的邮件将在“显示名称”字段以及“电子邮件地址”字段中显示电子邮件地址,并在“电子邮件类型”字段中显示“SMTP”:

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

【问题讨论】:

    标签: excel vba outlook office365 mailitem


    【解决方案1】:

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

    Dim recipient As Outlook.recipient
    
    For Each recipient In objOLMail.Recipients
        recipient.Resolve
    Next
    
    objOLMail.Save
    

    其实很简单。不知何故,我现在需要明确地解析每个收件人,这在以前是不需要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-28
      • 2010-11-30
      • 2018-12-11
      • 2022-01-08
      • 1970-01-01
      • 2011-06-15
      • 1970-01-01
      相关资源
      最近更新 更多