Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

List-unsubscribe in e-mail header. How-to?

I'm trying to add a List-Unsubscribe header to my e-mail that is being sent. So far I hadn't any luck trying to do so.

What I have got so far:

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);

The unSubscribeUrl is something like 'www.example.com/unlist?id=8822772727'. When I sent the e-mail everything works fine except for the list-unsubscribe option. Which is not shown in any mail client.

Any assistance would be welcome!

UPDATE
This is the whole code I use for sending the email:

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);

UPDATE 2
After a little research I got the header into the mailMessage. When I sent an email I can see the following headers:

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  

But when I open the email in any client I can't see the unsubscribe button in the client? Am I doing something else wrong?

like image 850
Gerard Avatar asked Dec 06 '10 11:12

Gerard


People also ask

How do I create a unsubscribe list header?

Mailto. Mailto is the most commonly used method for implementing the list-unsubscribe header. When a user clicks the unsubscribe link, the mail client generates an email with unsubscribe request and sends it to a specified email address. You also need to process the request and unsubscribe this user.

How do I add an unsubscribe link to my email header?

In Gmail, for example, you can view your email's header via the dropdown menu on the right of the sender details. Once you're viewing the email header, search for the “list-unsubscribe” section and check if you can find a mailto link, unsubscribe URL, or both.

How does the list-unsubscribe header work?

List-unsubscribe is an optional email header that allows email recipients to opt-out of receiving emails without clicking through an unsubscribe link or marking a sender as spam or junk.


1 Answers

Most email clients only support mailto-links.

Try this, it should work always:

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

The RFC specifies it is possible to use http-links also. But i've found that if you include http-links, the email clients no longer shows the unsubscribe link. I think it's because of the possibility that people only have access to the mail protocol.

So this does not always work:

 mailMessage.Headers.Add("List-Unsubscribe", "<http://www.host.com/list.cgi?cmd=unsub&lst=list>, <mailto:[email protected]?subject=unsubscribe>"; 
like image 180
0x20 Avatar answered Sep 22 '22 16:09

0x20