【问题标题】:send imap message and check for replies发送 imap 消息并检查回复
【发布时间】:2014-01-27 23:35:05
【问题描述】:

我想用 smtp/imap 发送电子邮件并在一段时间后检查回复。 所以我正在寻找一个开源库,它提供了一个用于发送电子邮件并稍后检查回复的 API。

据我了解,每条消息都已经包含唯一 ID,我看到很多库允许按 ID 下载消息。但我在发送电子邮件时看到的所有 SMTP 客户端都没有返回此 ID。

这种API很有帮助(S22.Imap):

using (ImapClient Client = new ImapClient("imap.gmail.com", 993,
 "username", "password", AuthMethod.Login, true))
{
    uids = GetUIdsFromMyDatabase();//how can that be achieved?
    IEnumerable<MailMessage> messages = Client.GetMessages(uids);
}

但它留下了 2 个问题:
1.在哪里可以得到发送的消息ID?
2. 我怎样才能在回复和它的父母(已发送)之间建立联系?

【问题讨论】:

    标签: c# imap


    【解决方案1】:

    SMTP 客户端可以自己创建一个 Message-ID。他们只需要确保左侧是独一无二的。

    如果客户端不生成 ID,SMTP 服务器会生成 ID,但不会告诉 SMTP 客户端 ID 是什么。一种简单且安全的方法是通过 MD5 或 SHA1 散列提供您将要发送的消息(整个消息),对结果进行 base64 编码并创建一个 形式的 ID,其中散列是base64 的哈希和 doma.in 是 From 字段的域。

    连接回复的常规方法是使用 Message-ID 和 References。当您发送回复时,您将参考设置为原始消息的参考和消息 ID 字段的串联。

    【讨论】:

    • 您好,谢谢,问题是我没有发送回复。我们的客户回复我们发送给他们的消息。那个id怎么设置?拉消息时可以通过IMAP搜索吗?谢谢
    • 是的。在您发送的邮件上设置 Message-Id。稍后,您将在使用 IMAP 命令(例如 'uid search header references ""')到达的消息中查找该消息 ID。还有更多方法,但这本质上就是例如gmail 将回复联系在一起,所以应该足够了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 2023-01-29
    • 2022-01-24
    • 2019-03-22
    • 1970-01-01
    • 2021-07-01
    • 2018-07-11
    相关资源
    最近更新 更多