EWS Managed API: как настроить From of email? - PullRequest
11 голосов
/ 19 января 2012

Я использую EWS Managed API для отправки электронной почты.Учетная запись "account@domain.com" имеет разрешения "Отправить как" для использования "sender@domain.com" почтового ящика для отправки сообщений (из Outlook, это нормально работает).*

Но я пытаюсь из кода - это не работает, в почте я читаю в поле "От" "account@domain.com".

....
EmailMessage message = new EmailMessage(service);
message.Body = txtMessage;
message.Subject = txtSubject;
message.From = txtFrom;
....
message.SendAndSaveCopy();

Каксделать отправку почты от имени другого пользователя?:)

Ответы [ 2 ]

6 голосов
/ 20 июля 2012

Прошло много времени с тех пор, как я возился с той же вещью, и я пришел к выводу, что это невозможно, несмотря на наличие прав "Отправить как".

Олицетворение - единственный способ использовать EWSсм. MSDN :

ExchangeService service = new ExchangeService();
service.UseDefaultCredentials = true;
service.AutodiscoverUrl("app@domain.com");

// impersonate user e.g. by specifying an SMTP address:
service.ImpersonatedUserId = new ImpersonatedUserId(
    ConnectingIdType.SmtpAddress, "user@domain.com");

Если олицетворение не включено, вам придется предоставить учетные данные пользователя, от имени которого вы хотите действовать.См. эту статью MSDN .

ExchangeService service = new ExchangeService();
service.Credentials = new NetworkCredential("user", "password", "domain");
service.AutodiscoverUrl("user@domain.com");

В качестве альтернативы вы можете просто указать адрес для ответа .

EmailMessage mail = new EmailMessage(service);
mail.ReplyTo.Add("user@email.com");

Однако "Отправить"as "права do " применяются при отправке почты с использованием System.Net.Mail, что во многих случаях будет просто замечательно при отправке электронной почты.Есть тонн примеров , иллюстрирующих , как это сделать .

// create new e-mail
MailMessage mail = new MailMessage();
mail.From = new MailAddress("user@domain.com");
mail.To.Add(new MailAdress("recipient@somewhere.com"));
message.Subject = "Subject of e-mail";
message.Body = "Content of e-mail";

// send through SMTP server as specified in the config file
SmtpClient client = new SmtpClient();
client.Send(mail);
1 голос
/ 04 сентября 2013

Я думаю, вы должны использовать свойство Sender, чтобы ваш код выглядел следующим образом:

EmailMessage message = new EmailMessage(service);
message.Body = txtMessage;
message.Subject = txtSubject;
message.Sender= txtFrom;
....
message.SendAndSaveCopy();
...