我试图发现在使用EWS托管API发送电子邮件后是否有办法确定互联网邮件ID。我知道您可以进入并从发送的框中获取结果,但发送这些电子邮件的服务器一次从不同的服务发送多封电子邮件。
答案 0 :(得分:1)
不,你不能,基本上是因为EWS异步发送消息,Id不可用,请参阅https://social.msdn.microsoft.com/Forums/azure/en-US/dd034b8c-ffa1-4ae0-9025-45fcf520c9e5/updateitem-does-not-return-itemid?forum=exchangesvrdevelopment
作为一种解决方法,您可能需要考虑在发送之前在Message上设置Internet messageId。只要它有效且独特,它应该可以正常工作,例如
ExtendedPropertyDefinition PidTagInternetMessageId = new ExtendedPropertyDefinition(4149, MapiPropertyType.String);
EmailMessage ema = new EmailMessage(service);
ema.Subject ="test from ews";
ema.Body = new MessageBody("test<br>Rgds<>");
ema.ToRecipients.Add("gscales@domain.com");
ema.SetExtendedProperty(PidTagInternetMessageId,("<" +Guid.NewGuid().ToString() + "@domain.com>"));
ema.SendAndSaveCopy();
此外,如果您在发送邮件之前首先将邮件另存为草稿,则服务器将分配MessageId属性,该属性应该能够使用Load进行回读。
干杯 格伦