【发布时间】:2011-05-20 22:24:03
【问题描述】:
我正在尝试将 List-Unsubscribe 标头添加到我正在发送的电子邮件中。到目前为止,我没有任何运气尝试这样做。
到目前为止我得到了什么:
var mailMessage = new MailMessage
{
Subject = newsletter.Subject,
Body = newsLetterHTML,
IsBodyHtml = true,
Sender = new MailAddress(senderAddress)
};
mailMessage.To.Add(subscriber.Email);
mailMessage.ReplyToList.Add(senderAddress);
mailMessage.Headers.Add("List-Unsubscribe", unSubscribeUrl);
unSubscribeUrl 类似于“www.example.com/unlist?id=8822772727”。
当我发送电子邮件时,除了列表取消订阅选项外,一切正常。没有在任何邮件客户端中显示。
欢迎任何帮助!
更新
这是我用于发送电子邮件的全部代码:
var mailMessage = new MailMessage
{
Subject = newsLetter.Subject,
Body = newsLetterHTML,
IsBodyHtml = true,
Sender = new MailAddress(senderAddress)
};
mailMessage.To.Add(subscriber.Email);
mailMessage.ReplyToList.Add(senderAddress);
mailMessage.Headers.Add("List-Unsubscribe", String.Format("<{0}>", "http://www.foo.com/unlist?id=8888"));
mailMessage.HeadersEncoding = Encoding.Default;
var smtpClient = new SmtpClient();
smtpClient.Send(mailMessage);
更新 2
经过一番研究,我将标题放入了mailMessage。当我发送电子邮件时,我可以看到以下标题:
List-Unsubscribe: <http://demo.localhost/home/hobbymap-gerard/afmelden-voor-nieuwsbrief?id=c786aeb0-554d-4670-94d8-82d6f25a050b>
MIME-Version: 1.0
From: info@test.nl
To: test@gmail.com
Reply-To: info@test.nl
Date: 8 Feb 2011 09:50:22 +0100
Subject: Test met plaatje
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
但是当我在任何客户端中打开电子邮件时,我在客户端中看不到取消订阅按钮?我做错了什么吗?
【问题讨论】:
-
在接收客户端检查邮件头时,您是否看到“List-Unsubscribe”?你可以添加其他标题吗?尝试使用 WireShark 验证您是否将 List-Unsubscribe 标头发送到本地 SMTP 服务器。如果是这样,可能是您的本地 SMTP 服务器正在剥离该标头。
-
RFC 仅在示例中显示
mailto:URL,可能它们仅支持mailto:取消订阅?
标签: c# asp.net email email-headers