Список-отписаться в заголовке электронной почты. Как?
Я пытаюсь добавить заголовок 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
Но когда я открываю письмо на любом клиенте, я не вижу кнопку отписки в клиенте? Я делаю что-то еще не так?
Ответы
Ответ 1
Большинство почтовых клиентов поддерживают только mailto-ссылки.
Попробуйте это, он должен работать всегда:
mailMessage.Headers.Add("List-Unsubscribe", "<mailto:[email protected]?subject=unsubscribe>");
RFC указывает, что можно также использовать http-ссылки.
Но я обнаружил, что если вы включаете http-ссылки, почтовые клиенты больше не показывают ссылку на отмену подписки. Я думаю, это связано с тем, что люди имеют доступ только к почтовому протоколу.
Так что это не всегда работает:
mailMessage.Headers.Add("List-Unsubscribe", "<http://www.host.com/list.cgi?cmd=unsub&lst=list>, <mailto:[email protected]?subject=unsubscribe>";
Ответ 2
Согласно веб-сайту List-Unsubscribe, URL-адрес должен быть заключен в угловые скобки, например, <https://www.example.com/unlist?id=8822772727>
.
Вы можете попробовать что-то вроде:
mailMessage.Headers.Add("List-Unsubscribe", String.Format(
CultureInfo.InvariantCulture, "<https://{0}>", unSubscribeUrl));
Чтобы убедиться, что вы не помечены как спам, убедитесь, что у вас есть SSL-сертифицированный домен.