如何在回复时维护/保留自定义电子邮件头(X-header)



我使用以下代码从我的.NET应用程序发送电子邮件,在这里我添加了自定义标头X-Company。当收到电子邮件时,我会正确地获得此自定义邮件头,但每当我回复/转发此邮件时,自定义邮件头都不会返回。

MailMessage message = new MailMessage(From, To);                  
                message.Headers.Add("X-Company","xyz");                
                message.Body = emailMessage.ToString();
                message.Subject = Subject;                
                message.IsBodyHtml = true;               
                smtp.Send(message);

这在所有电子邮件客户端中都很难做到,因为当你回复时,他们可以自由地去掉他们认为不必要的标题。

如果你的唯一目标是插入一些键值对,并在有人回复时将其返回给你,那么在你处理HTML电子邮件时,你可以有一个隐藏的HTML元素,其中有你的自定义标头信息。

我们也遇到过类似的情况,我们应该向客户发送电子邮件,并将其读回,并将它们与各种活动关联起来。

在研究过程中,我们发现唯一不会被各种电子邮件客户端(Outook、Yahoo、Gmail等)取代或删除的标题是"XREF"。我们已经对它进行了彻底的测试,自我们首次引入它以来,它一直在工作。

正如Parapura rajkumar所提到的,在电子邮件中包含隐藏的html元素是实现这一点的最佳方法,因为并非所有电子邮件提供商都会保留自定义标头。

电子邮件提供商经常会破坏/删除html参数,我发现最可靠的偷运参数的方法是将它们作为图像查询参数。

下面是一个要附加到电子邮件正文的不可见图像的示例。您可以用自己的资源替换wikimedia映像,并将参数作为查询参数偷运通过。当用户回复时,您应该能够再次解析它。如果你托管的是URL,这还有一个额外的好处,那就是当电子邮件打开时,你可以访问你的服务器,这可以用来确定何时查看了电子邮件。

<img src='https://upload.wikimedia.org/wikipedia/commons/c/ca/1x1.png?policyref={policyref}'  alt='' width='1' height='1' border='0' style='height: 1px; width: 1px; border-width: 0px; margin: 0px; padding: 0px;'>

最新更新