Outlook VSTO获取发件人电子邮件和发送电子邮件时的发送时间

时间:2017-01-25 17:36:35

标签: vb.net email outlook outlook-addin outlook-2016

我在功能区中有一个按钮,可以调用以下代码。目的是为员工提供一个单击按钮,同时发送电子邮件并将内容复制到剪贴板。 (长话短说 - 必须将发送给客户的所有电子邮件粘贴到另一个系统。我无权直接发送电子邮件。)

问题:我无法获取发件人姓名或实际发送时间。

假设:我猜测在发送send命令之前,Outlook实际上并没有设置该值。发送时间相同。 (我之所以使用Date.Now)。

附加信息:除了我最初添加按钮以做到这两点之外的解决方案之外的解决方案是可以接受的。

Public Sub OnTextButton(ByVal control As Office.IRibbonControl)
    Dim mailItem As Outlook.MailItem = Globals.ThisAddIn.Application.ActiveInspector().CurrentItem
    Dim email = "From: " & mailItem.Sender.Name & vbCrLf &
        "Sent: " & Date.Now.ToString("f") & vbCrLf &
        "To: " & mailItem.To & vbCrLf &
        "Subject: " & mailItem.ConversationTopic & vbCrLf & vbCrLf & mailItem.Body
    My.Computer.Clipboard.SetText(email)
    mailItem.Send()
End Sub

参考文献: https://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.mailitem_properties.aspx

1 个答案:

答案 0 :(得分:2)

这是正确的:在实际发送邮件并将其移至“已发送邮件”文件夹之前,不会设置与发件人相关的属性。

你可以

  1. 在已发送邮件文件夹
  2. 上的Items.ItemAdd事件中运行您的代码
  3. 检查Account.SendUsingAccount属性(可以为null)并使用Account.SmtpAddress。如果未设置帐户,您可以假设使用了Namespace.Accounts集合中的第一个帐户。