Список-отписаться в заголовке письма. Как? - PullRequest
14 голосов
/ 06 декабря 2010

Я пытаюсь добавить заголовок 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». Когда я отправлял электронное письмо, все работало нормально, за исключением опции list-unsubscribe. Который не отображается ни в одном почтовом клиенте.

Любая помощь будет приветствоваться!

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: 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  

Но когда я открываю письмо в любом клиенте, я не вижу кнопку отказа от подписки в клиенте? Я делаю что-то еще не так?

Ответы [ 2 ]

15 голосов
/ 18 октября 2011

Большинство почтовых клиентов поддерживают только mailto-ссылки.

Попробуйте, это должно работать всегда:

mailMessage.Headers.Add("List-Unsubscribe", "<mailto:list@host.com?subject=unsubscribe>");

RFC указывает, что возможно также использовать http-ссылки.Но я обнаружил, что если вы включите http-ссылки, почтовые клиенты больше не будут отображать ссылку отказа от подписки.Я думаю, это из-за того, что люди имеют доступ только к почтовому протоколу.

Так что это не всегда работает:

 mailMessage.Headers.Add("List-Unsubscribe", "<http://www.host.com/list.cgi?cmd=unsub&lst=list>, <mailto:list-request@host.com?subject=unsubscribe>"; 
2 голосов
/ 06 декабря 2010

Согласно веб-сайту List-Unsubscribe , URL должен быть заключен в угловые скобки, например, <https://www.example.com/unlist?id=8822772727>.

Вы можете попробовать что-то вроде:

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

Чтобы убедиться, что вы не помечены как спам, убедитесь, что у вас есть SSL-сертифицированный домен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...