【问题标题】:Is there a way to determine if a email is a reply/response using ews c#?有没有办法使用 ews c# 确定电子邮件是否是回复/响应?
【发布时间】: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: 字段的引用。

标签: c# exchangewebservices


【解决方案1】:

InReplyTo 是一个字符串值,其中包含此消息作为回复的项目的标识符。如果为 null,则该消息不是回复。

var mailItem = myItem as EmailMessage;
if (mailItem.InReplyTo != null)
{
   // this is a reply message
   .
   .
   .
}

更多信息:MSDN InReplyTo

【讨论】:

  • 这仅适用于 MS Exchange,不是吗?
  • InReplyTo 为空,如果用户在回复电子邮件时更改主题
【解决方案2】:

好的。所以从评论。似乎没有真正确定的方法。人们的 cmets 帮助我得到了这个答案并关闭了这个帖子。我会改写并在这里发布。所以首先。感谢您的所有回答。

最简单的方法是在您的主题中包含一个好的参考编号。如“Supp-1234”

现在我们可以在代码中检查标题中的参考编号。如果它在那里。这很可能是一种回应。检查 RE 也是一种选择,但效果稍差。令人遗憾的是,客户可以从主题标题中删除参考编号/RE。对于那些家伙。可怜的你,你的问题不会被记录下来。或者你知道。做任何事。 :)

再次感谢所有回复。你们真的帮了我很多!

【讨论】:

    猜你喜欢
    • 2010-09-16
    • 2015-12-19
    • 2014-07-15
    • 2015-10-21
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多