Как я могу получить Outlook.Account с адреса SMTP или samaccountname?

1

Окружающая среда: Outlook 2010 (32-разрядная версия), Exchange 2010, Server 2008R2 (64-разрядная версия)
Dev Environment: Visual Studio 2010 в Windows 7 (64-разрядная версия)

Я пишу надстройку С# для Outlook 2010, и у меня возникла проблема с указанием адреса/адреса электронной почты, с которого отправлено электронное письмо.

Я хочу отправить электронное письмо из общего почтового ящика; У меня есть соответствующее разрешение на почтовый ящик.

Программно, у меня есть SMTP-адрес почтового ящика ([email protected]) и SAMAccountName почтового ящика (sharedacc).

В настоящее время мой код выглядит так:

Outlook.MailItem response = app.CreateItemFromTemplate(template.Path, folder) as Outlook.MailItem;
response.SendUsingAccount = ???<Outlook.Account>;

Однако я не могу найти способ создания объекта Outlook.Account из SAMAccountName или SMTP-адреса. Есть ли способ?

Я думал, что могу использовать вместо этого:

response.Sender = ???<Outlook.AddressEntry>

Но аналогичным образом я не могу найти способ создания Outlook.AddressEntry из SAMAccountName или SMTP-адреса. Кто-нибудь знает как?

Любые подсказки, ссылки или дикие догадки очень ценятся.

Теги:
outlook
outlook-addin

2 ответа

1
Лучший ответ

Если вы отправляете от имени другого почтового ящика Exchange, все, что вам нужно сделать, это установить свойство MailItem.SentOnBehalfOfName перед отправкой.

  • 0
    Вау! Как я не знал этого ?! =) Это работает с адресом SMTP или именем SAMAccountName. Спасибо!
0

Вы можете получить учетную запись, используя Application.Session.Accounts:

Outlook.Account account = Application.Session.Accounts["sharedacc"];
response.SendUsingAccount = account;

Проверьте эту ссылку.

И если вам нужно проверить другие доступные учетные записи, вы можете использовать это (скопировать пасту из msdn):

StringBuilder builder = new StringBuilder();
foreach (Outlook.Account account in accounts)
{
   // The DisplayName property represents the friendly name of the account.
   builder.AppendFormat("DisplayName: {0}\n", account.DisplayName);

   // The UserName property provides an account-based context to determine identity.
   builder.AppendFormat("UserName: {0}\n", account.UserName);

   // The SmtpAddress property provides the SMTP address for the account.
   builder.AppendFormat("SmtpAddress: {0}\n", account.SmtpAddress);

   // The AccountType property indicates the type of the account.
   builder.Append("AccountType: ");
   switch (account.AccountType)
   {
      case Outlook.OlAccountType.olExchange:
           builder.AppendLine("Exchange");
           break;
      case Outlook.OlAccountType.olHttp:
           builder.AppendLine("Http");
           break;
      case Outlook.OlAccountType.olImap:
           builder.AppendLine("Imap");
           break;
      case Outlook.OlAccountType.olOtherAccount:
           builder.AppendLine("Other");
           break;
      case Outlook.OlAccountType.olPop3:
           builder.AppendLine("Pop3");
           break;
   }

   builder.AppendLine();
}
  • 0
    Большое вам спасибо, но это не работает для меня. У меня есть только одна «учетная запись», и это моя собственная учетная запись Exchange. 'Sharedacc' - это чисто общий почтовый ящик, к которому у меня есть полный доступ / отправка в качестве разрешений. Не отображается, если я перебираю Application.Session.Accounts.
  • 0
    Хорошо, извините, что я неправильно прочитал ваш вопрос

Ещё вопросы

Сообщество Overcoder
Наверх
Меню