我正在使用EWS托管API发送电子邮件。 我收到了Microsoft.Exchange.WebServices.Data.ServiceResponseException:EmailAddress或ItemId必须包含在请求中。
在Soap返回XML中,我看到ErrorMissingInformationEmailAddress:如果缺少EmailAddress(NonEmptyStringType)元素,则会发生此错误。
它在谈论哪个电子邮件地址?
使用Exchange 2007 SP1。 Exchange凭据是正确的,往返电子邮件地址是有效的电子邮件。 有任何想法吗?谷歌没有帮助。
相同的代码适用于其他Exchange Server。 service.AutodiscoverUrl()不适用于此服务器。
using Microsoft.Exchange.WebServices.Data;
protected void SendEwsMail()
{
//Trust all certificates
System.Net.ServicePointManager.ServerCertificateValidationCallback =
((sender, certificate, chain, sslPolicyErrors) => true);
var service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Credentials = new NetworkCredential("user@domain.com", "password");
service.Url = new Uri("Url");
var email = new EmailMessage(service);
email.ToRecipients.Add("user@domain.com");
email.From = new EmailAddress("user@domain.com");
//email.ReplyTo.Add(recipient.FromAddress);
email.Sender = new EmailAddress("user@domain.com");
email.Subject = "test";
// Send the message and save a copy.
email.SendAndSaveCopy();
}
答案 0 :(得分:0)
事实证明,对于有问题的邮件服务器(MS Exchange),我需要使用此方法:
Writing an encrypted mail via Exchange Web Services
var item = new EmailMessage(service);
item.MimeContent = new MimeContent(Encoding.ASCII.HeaderName, content);
// Set recipient infos, etc.
item.Send();
这似乎是因为加密的MIME附件。使用Microsoft.Exchange.WebServices.Data.EmailMessage类的标准To,From,Subject属性无法正常工作。
虽然邮件服务器是SmarterMail时它可以正常工作。
SmarterMail 9.x是唯一支持Exchange Web服务(EWS)的邮件服务器(包括Microsoft Exchange)之一。 (来自http://blogs.smartertools.com/tag/exchange-web-services/)
任何人都知道为什么SmarterMail的行为会与MS Exchange不同吗?