2010-12-06 78 views
14

我正在尝试将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'。 当我发送电子邮件时,除了列表取消订阅选项外,一切正常。哪些不在任何邮件客户端中显示。

任何援助将受到欢迎!

UPDATE
这是整个代码,我用发送电子邮件:

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: [email protected] 
To: [email protected] 
Reply-To: [email protected] 
Date: 8 Feb 2011 09:50:22 +0100 
Subject: Test met plaatje 
Content-Type: text/html; charset=us-ascii 
Content-Transfer-Encoding: quoted-printable 

但是,当我在任何客户端打开电子邮件,我不能看到客户的退订按钮?我在做别的事吗?

+0

你看到“列表,取消”当您检查在接收客户端的消息头?你可以添加其他头文件吗?尝试使用WireShark来验证您是否将List-Unsubscribe标头发送到本地SMTP服务器。如果是这样,可能是您的本地SMTP服务器正在删除该标头。 – 2010-12-06 16:26:29

+1

RFC仅在示例中显示`mailto:`URL,可能它们只支持`mailto:`取消订阅? – tripleee 2011-08-25 06:50:05

回答

2

根据该List-Unsubscribe website,则URL应该用尖括号,例如包裹<http://www.example.com/unlist?id=8822772727>

你可以尝试这样的:

mailMessage.Headers.Add("List-Unsubscribe", String.Format(
    CultureInfo.InvariantCulture, "<http://{0}>", unSubscribeUrl)); 
+0

嗨弗雷德里克, 谢谢你的回复。我试图添加尖括号,但它没有区别。 我做了以下事情: `mailMessage.Headers.Add(“List-Unsubscribe”,String.Format(“<{0}>”,personalUnsubscribeUrl)); mailMessage.HeadersEncoding = Encoding.Default;' – Gerard 2010-12-06 13:47:00

14

大多数电子邮件客户端仅支持至mailto链接。

试试这个,它应该永远工作:

mailMessage.Headers.Add("List-Unsubscribe", "<mailto:[email protected]?subject=unsubscribe>"); 

的RFC文档,可以使用HTTP链接也。 但我发现如果您包含http-links,电子邮件客户端不再显示取消订阅链接。我认为这是因为人们只能访问邮件协议。

所以这并不总是奏效:

mailMessage.Headers.Add("List-Unsubscribe", "<http://www.host.com/list.cgi?cmd=unsub&lst=list>, <mailto:[email protected]?subject=unsubscribe>";