Окружающая среда: 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-адреса. Кто-нибудь знает как?
Любые подсказки, ссылки или дикие догадки очень ценятся.
Если вы отправляете от имени другого почтового ящика Exchange, все, что вам нужно сделать, это установить свойство MailItem.SentOnBehalfOfName перед отправкой.
Вы можете получить учетную запись, используя 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();
}