11

Eメールの送信にEWSマネージAPIを使用しています。アカウント「account@domain.com 」には、「 sender @ domain.com」メールボックスを使用してメッセージを送信するための「Sendas」権限があります(Outlookからは正常に機能します)。

しかし、私はコードから試してみました-それは機能しません。メールでは、「From」「account@domain.com」のフィールドで読み取られます

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

別のユーザーに代わってメールを送信するにはどうすればよいですか?:)

4

2 に答える 2

6

同じことをいじってからしばらく経ちましたが、「送信者」権限があるにもかかわらず、それは不可能であると結論付けました。

偽装は、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");

ただし、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);
于 2012-07-20T09:32:02.433 に答える
1

Senderコードが次のようになるように、プロパティを使用する必要があると思います。

EmailMessage message = new EmailMessage(service);
message.Body = txtMessage;
message.Subject = txtSubject;
message.Sender= txtFrom;
....
message.SendAndSaveCopy();
于 2013-09-04T08:55:57.550 に答える