发送邮件时outlook VSTO获取发件人邮件和发送时间
Outlook VSTO get Sender email and Sent time when email is sent
我在功能区中有一个调用以下代码的按钮。目的是为员工提供一个单击按钮,既可以发送电子邮件,也可以将内容复制到剪贴板。 (长话短说 - 必须将所有发送给客户的电子邮件粘贴到另一个系统中。我没有权限直接将电子邮件发送到那里。)
问题:无法获取发件人姓名或实际发送时间。
假设:我猜 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
正确:在邮件实际发送并移动到“已发送邮件”文件夹之前,不会设置与发件人相关的属性。
你可以
- 运行 您在“已发送邮件”文件夹
Items.ItemAdd
事件中的代码
- 选中
Account.SendUsingAccount
属性(可以为空)并使用Account.SmtpAddress
。如果未设置帐户,您可以假设使用了 Namespace.Accounts
集合中的第一个帐户。
我在功能区中有一个调用以下代码的按钮。目的是为员工提供一个单击按钮,既可以发送电子邮件,也可以将内容复制到剪贴板。 (长话短说 - 必须将所有发送给客户的电子邮件粘贴到另一个系统中。我没有权限直接将电子邮件发送到那里。)
问题:无法获取发件人姓名或实际发送时间。
假设:我猜 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
正确:在邮件实际发送并移动到“已发送邮件”文件夹之前,不会设置与发件人相关的属性。
你可以
- 运行 您在“已发送邮件”文件夹
Items.ItemAdd
事件中的代码 - 选中
Account.SendUsingAccount
属性(可以为空)并使用Account.SmtpAddress
。如果未设置帐户,您可以假设使用了Namespace.Accounts
集合中的第一个帐户。