【问题标题】:Add headers to outgoing smtp message that will exist in reply将标题添加到将在回复中存在的传出 smtp 消息
【发布时间】:2018-12-10 20:28:26
【问题描述】:

我需要在外发电子邮件与回复电子邮件之间建立关联,而不更改主题或正文。

我尝试在 SMTP 外发邮件中添加一些标头:

var outgoingMessage = new System.Net.Mail.MailMessage();
mail.Headers.Add("Tag","MyNewTag");
mail.Headers.Add("CorrelationID","MyNewCorrID");

不幸的是,在回复该电子邮件时 - 那些标头不见了。

有什么方法可以在不干扰主题或正文的情况下关联传出消息和传入消息?

【问题讨论】:

    标签: email smtp email-headers


    【解决方案1】:

    对于标题,您可能应该使用 X-headers:

    mail.Headers.Add("X-Tag","MyNewTag");
    mail.Headers.Add("X-CorrelationID","MyNewCorrID");
    

    要在不干扰主题或正文的情况下关联传出和传入消息,您还可以检查 References: 标头(仅用于回复,不用于转发)。

    此标头包含原始消息的Message-ID('s):

    References: <some-id@domain>
    

    还有In-Reply-To 标头。

    要添加更多信息,您甚至可以自定义传出的Message-ID

    也许Thread-Index 标头也有帮助。

    【讨论】:

    • 我使用了参考资料,效果很好。即使转发消息。
    • @ohadinho 很高兴听到。但是,转发时保留引用可能取决于电子邮件客户端。 PS,还有In-Reply-To标头(添加到答案中)。
    • 不幸的是,从 gmail 客户端回复时,这些解决方案都不起作用。有什么想法吗?
    • @ohadinho 如果客户决定在回复中不包含/保留任何这些标头,那么我认为对此无能为力。 gmail客户端是否至少保留Thread-Index标头?或者 gmail 的回复中是否还有其他标题? (我没有 gmail,所以我无法对此进行测试) - 剩下的唯一选择是保留一个本地列表,例如 from 和/或 tosubject,但即便如此,这些字段回复时可以更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多