c# - EWS 在 WellKnownFolderName.SentItems 中保存已发送的项目
问题描述
我正在尝试与用户A一起发送EmailMessage
using并将发送的项目保存在用户B的文件夹中。基本上它有效。我遇到的唯一问题是,该项目被保存为草稿,而不是作为已发送的项目。EWS
SentItems
编码:
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time");
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2, timeZone)
{
Url = new Uri(uri),
Credentials = new WebCredentials(new NetworkCredential(user, password, domain)),
UseDefaultCredentials = false,
};
EmailMessage message = new EmailMessage(service)
{
Subject = subject,
Body = new MessageBody(BodyType.HTML, fullBody)
};
message.From = email;
message.ToRecipients.Add(email);
FolderId folderId = new FolderId(WellKnownFolderName.SentItems, email);
我尝试了什么:
// Simply sends the message
message.Send();
// Sends the item but is it not saved in the sentItems of email-account
FolderId folderId = new FolderId(WellKnownFolderName.SentItems, email);
message.SendAndSaveCopy(folderId);
// Sends the item, saves the item in the right folder, but it is saved as a draft, not as a sent item
FolderId folderId = new FolderId(WellKnownFolderName.SentItems, email);
message.Send();
message.Move(folderId);
我错过了什么或做错了什么?
这家伙告诉简单地保存然后保存使用folderId,但在这种情况下我收到以下错误:
This operation can't be performed because this service object already has an ID. To update this service object, use the Update() method instead.
解决方案
经过一些测试,我发现正确的程序如下:
FolderId folderId = new FolderId(WellKnownFolderName.SentItems, email);
message.SendAndSaveCopy(folderId);
但是,必须存在一个错误,因为该项目始终保存在用于验证 ExchangeService 的用户的 sentItems 文件夹中,而忽略了folderId
传递的参数。
解决方案(解决方法)是按照Microsoft 文档的说明模拟用户。这里是模拟代码:
service.AutodiscoverUrl(email);
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, email);
它有效......我想知道其他人是否能够以适当的方式安排它。
推荐阅读
- automated-tests - 我该如何设置
. .Settings.Run.OnError 以非编程方式用于 BPT 组件的交互式(即基于 IDE 的调试)运行? - sql-server - 强制不使用 group by 中的字段
- java - Java serialVersionUID 是否必须是静态的?可以是子类通过构造函数设置的实例变量吗?
- xamarin.forms - Xamarin.Forms,在编辑器中设置 MaxLines
- html - 使用 VBA 从表中提取详细信息获取对象变量或未设置块变量
- javascript - 为什么光滑的滑块不是不过滤类?
- javascript - React:检测孩子是否有特定的父母
- javascript - 响应的“日期”标头对于获取当前日期时间是否可靠?
- javafx - JavaFX LineChart 缩放不精确
- c# - 如何将对象 ID 从 DTO 映射到数据库中的现有对象?