【发布时间】:2013-07-25 03:40:33
【问题描述】:
我正在编写一个支持系统,这是我第一次使用 EWS。到目前为止,我已经相当成功了。我可以提取我需要的信息。发送电子邮件,一切正常。我确实有点头疼。有没有办法判断电子邮件是否实际上是回复?该应用程序的基本思想是有人发送电子邮件。我们回复并给他们一个参考号。这已经完成并且工作得很好。现在,如果他们回复同一个地址,我们需要在我们的数据库中记录一些不同的地址。因此我需要一些神奇的方法来判断电子邮件是否是回复。到目前为止,我被困住了。
任何建议都将不胜感激,因为我是编程行业的新手,到目前为止谷歌搜索没有任何用处。我在这里包含一段代码
FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, view);
foreach (Item myItem in findResults.Items.Where(i => i is EmailMessage))
{
var mailItem = myItem as EmailMessage;
if (!mailItem.IsRead)
{
// load primary properties and get a text body type
mailItem.Load(propertySet);
// Update the item to isRead in email
mailItem.IsRead = true;
mailItem.Update(ConflictResolutionMode.AutoResolve);
//Check if it is a reply and mark the msg as such
// add message to list
SupportEmailMessage msg = new SupportEmailMessage();
msg.Subject = mailItem.Subject;
msg.MessageBody = mailItem.Body.Text;
msg.DateSent = mailItem.DateTimeSent;
msg.Sender = mailItem.Sender.Address;
toReturnList.Add(msg);
}
}
【问题讨论】:
-
你可以做
msg.Subject.Contains("RE:").. 抱歉不能帮助 +1 虽然 -
其实这是个好主意...为什么我没有想到...可能是睡眠不足。从理论上讲,我可以尝试使用它。希望能发挥一些作用......
-
当我使用 EWS 处理电子邮件时,我会在主题中使用关键字来确定需要做什么。当 EWS 发出时,我可能有 INCIDENT ID1234 等。当有消息进来时,我检查关键字并采取行动。没有关键字意味着它是新的。不利的一面是,如果人们弄乱了主题行。 SMTP 协议不会说明它是回复消息还是新消息。可能的一件事是将自定义值插入邮件标头stackoverflow.com/questions/17034222/…
-
Microsoft Dynamics CRM 专为服务而设计,功能非常强大,让您无需重新发明轮子。可免费试用microsoft.com/en-us/dynamics/crm-free-trial-overview.aspx。顺便说一句,我讨厌这件事……但它可以完成工作。它也跟踪电子邮件!
-
在引用的问题中添加了对 rfc-822 和
In-Reply-To:字段的引用。