2017-01-25 94 views
1

我在功能區中有一個按鈕,用於調用以下代碼。目的是爲員工提供一個按鈕來單擊它們發送電子郵件並將內容複製到剪貼板。 (長話短說 - 必須將發送給客戶端的所有電子郵件粘貼到另一個系統中,我無法直接在此處發送電子郵件。)Outlook VSTO獲取發件人電子郵件和發送電子郵件的時間

問題:我無法獲取發件人姓名或實際發送時間。

假設:我猜Outlook直到發送send命令才真正設置該值。發送時間相同。 (我使用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

回答

2

這是正確的:發件人相關的屬性未設置直到該消息實際發送並移動到發送郵件文件夾。

您可以

  1. 在發送郵件的Items.ItemAdd事件中運行代碼文件夾
  2. 檢查Account.SendUsingAccount屬性(可以爲空),並使用Account.SmtpAddress。如果未設置帳戶,則可以假設使用Namespace.Accounts集合中的第一個帳戶。