[英]Uniquely identify an email on send using System.Net.Mail
我正在寻找一种方法来在使用 .NET SmtpClient class(在 System.Net.Mail 中)发送时唯一识别 email,即
SmtpClient client = new SmtpClient(smtpServer, smtpPort);
client.EnableSsl = false;
MailAddress from = new MailAddress(fromAddress);
MailAddress to = new MailAddress(destinationAddress);
MailMessage message = new MailMessage(from, to);
message.Body = body;
message.Subject = subject;
等等
我可以使用 message.Headers 设置“消息 ID”属性(将其设置为 System.Guid),但它会被 smtp 服务器覆盖,而且我不知道如何访问 smtp 服务器生成的消息 ID。
我需要一个客户端系统来打开接收 email 的 pop3 邮箱,并能够通过这个唯一标识符对其进行跟踪。
有谁知道这是否可能?
一种选择是将自定义 header 附加到消息中。 自定义标头用X-
前缀表示。 因此,在这种情况下,您可能会创建一个不会被覆盖的名为X-Unique-Id
名称。
但是,并非所有邮件客户端都允许基于自定义标头进行过滤/搜索,您必须检查客户端。
根据MSDN :
发送 MailMessage 实例时,将包含添加的任何自定义标头。
只需添加到 message.Headers 集合中,例如:
message.Headers["X-Unique-Id"] = "1";
另一种选择是使用包含消息 ID 的特殊回复:或发件人:值。 例如,如果您的回复地址是 auto@responder.net,则将其更改为 auto+{unique-id}@responder.net。 许多邮件服务器(包括 gmail)会将 + 视为通配符,并将邮件正常发送到 auto@responder.net。 这是允许用户通过 email 直接回复应用内消息的常用方法。
根据“客户端系统”的含义,我建议您添加一个客户 header ,例如X-MyHeader: GUID
。
X-Headers
不与邮件服务器交互; 这也被许多流行的邮件工具使用,例如 mailchimp:
System.Net.Mail.MailMessage m;
m.Headers.Add("X-MyHeader", Guid.NewGuid());
您能否将 GUID 附加到主题行或将其添加到 email 正文的最后? 用户可以看到它,但如果它位于 email 的底部(可能还有更多信息),它将不碍事,仍然可以进行搜索。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.