2017-01-25 13 views
1

У меня есть кнопка в ленте, которая вызывает приведенный ниже код. Цель состоит в том, чтобы дать сотрудникам кнопку щелчка, которая отправляет электронное письмо и копирует содержимое в буфер обмена. (короткая короткая история - нужно вставить все электронные письма, отправленные клиентам в другую систему. У меня нет доступа, чтобы просто отправить письмо прямо там.)Outlook VSTO получает электронную почту отправителя и отправляет время, когда отправляется электронное письмо

Проблема: я не могу получить имя отправителя или фактическое время отправки.

Предположение: Я предполагаю, что 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

ответ

2

Это правильно: свойства, связанные с отправителя не установлены, пока сообщение не будет отправлено на самом деле, и переехал в папке Отправленные.

Вы можете

  1. запустить свой код в Items.ItemAdd события на папке Переданные
  2. Проверьте Account.SendUsingAccount свойство (может быть пустым) и использовать Account.SmtpAddress. Если учетная запись не установлена, вы можете предположить, что используется самая первая учетная запись из коллекции Namespace.Accounts.