Ger*_*ard 15 c# asp.net email email-headers
我正在尝试将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);
Run Code Online (Sandbox Code Playgroud)
的unSubscribeUrl是一样的东西"www.example.com/unlist?id=8822772727".当我发送电子邮件时,一切正常,除了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", String.Format("<{0}>", "http://www.foo.com/unlist?id=8888"));
mailMessage.HeadersEncoding = Encoding.Default;
var smtpClient = new SmtpClient();
smtpClient.Send(mailMessage);
Run Code Online (Sandbox Code Playgroud)
更新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
Run Code Online (Sandbox Code Playgroud)
但是当我在任何客户端打开电子邮件时,我看不到客户端中的取消订阅按钮?我做错了什么吗?
小智 15
大多数电子邮件客户端仅支持mailto-links.
试试这个,它总是应该工作:
mailMessage.Headers.Add("List-Unsubscribe", "<mailto:list@host.com?subject=unsubscribe>");
Run Code Online (Sandbox Code Playgroud)
RFC规定也可以使用http-links.但我发现,如果你包含http-links,电子邮件客户端将不再显示取消订阅链接.我认为这是因为人们只能访问邮件协议.
所以这并不总是有效:
mailMessage.Headers.Add("List-Unsubscribe", "<http://www.host.com/list.cgi?cmd=unsub&lst=list>, <mailto:list-request@host.com?subject=unsubscribe>";
Run Code Online (Sandbox Code Playgroud)
除了其他答案之外,还有RFC-8058需要另一个标头才能启用 HTTPS 链接取消订阅功能:
List-Unsubscribe:<https://example.com/unsubscribe.html?opaque=123456789>
List-Unsubscribe-Post: List-Unsubscribe=One-Click
Run Code Online (Sandbox Code Playgroud)
List-Unsubscribe-Post标头应该有一个值List-Unsubscribe=One-Click。这是为了防止反垃圾邮件软件意外取消订阅,并允许显示带有取消订阅按钮的网页的额外步骤。
某些电子邮件客户端不会处理List-Unsubscribe没有标头的链接List-Unsubscribe-Post。
根据List-Unsubscribe网站,URL应该用尖括号括起来,例如<https://www.example.com/unlist?id=8822772727>。
你可以尝试这样的事情:
mailMessage.Headers.Add("List-Unsubscribe", String.Format(
CultureInfo.InvariantCulture, "<https://{0}>", unSubscribeUrl));
Run Code Online (Sandbox Code Playgroud)
为确保您不被标记为垃圾邮件,请确保拥有 SSL 认证域名。
| 归档时间: |
|
| 查看次数: |
16829 次 |
| 最近记录: |