使用System.Net.Mail唯一标识发送的电子邮件

Sea*_*man 7 .net c# email smtp guid

我正在寻找一种方法来在使用.NET SmtpClient类(在System.Net.Mail中)发送电子邮件时唯一标识电子邮件,即

        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;
Run Code Online (Sandbox Code Playgroud)

等等

我可以使用message.Headers(将其设置为System.Guid)设置'Message-Id'属性,但它被smtp服务器覆盖,我不知道如何访问smtp服务器生成的消息ID.

我需要一个客户端系统来打开接收电子邮件的pop3邮箱,并能够通过这个唯一标识符跟踪它.

任何人都知道这是否可行?

hem*_*emp 8

一种选择是将自定义标头附加到邮件.自定义标头用X-前缀表示.因此,在这种情况下,您可以创建一个X-Unique-Id不会被覆盖的被调用者.

但是,并不一定所有邮件客户端都允许基于自定义标头进行过滤/搜索,您必须检查客户端.

每个MSDN:

发送MailMessage实例时,将包括添加的任何自定义标头.

只需添加到message.Headers集合中:

message.Headers["X-Unique-Id"] = "1";

另一种选择是使用特殊的reply-to:或from:包含消息id的值.例如,如果您的回复地址是auto@responder.net,则将其更改为auto+{unique-id }@responder.net.许多邮件服务器(包括gmail)会将+视为通配符,并将邮件正常传递给auto@responder.net.这是一种常用方法,用于允许用户通过电子邮件直接回复应用内消息.