template net asp c# asp.net email email-headers

net - c# email template



Lista-darse de baja en el encabezado del correo electrónico. ¿Cómo? (2)

Estoy tratando de agregar un encabezado List-Unsubscribe a mi correo electrónico que se está enviando. Hasta ahora no he tenido suerte tratando de hacerlo.

Lo que tengo hasta ahora:

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 es algo así como ''www.example.com/unlist?id=8822772727''. Cuando envié el correo electrónico, todo funciona bien, excepto por la opción de anulación de suscripción a la lista. Que no se muestra en ningún cliente de correo.

¡Cualquier asistencia sería bienvenida!

ACTUALIZAR
Este es el código completo que uso para enviar el correo electrónico:

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

ACTUALIZACIÓN 2
Después de investigar un poco, recibí el encabezado en mailMessage. Cuando envié un correo electrónico, puedo ver los siguientes encabezados:

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

Pero cuando abro el correo electrónico en cualquier cliente, ¿no puedo ver el botón de cancelación de suscripción en el cliente? ¿Estoy haciendo algo más mal?


Según el sitio web List-Unsubscribe , la URL debe estar entre corchetes angulares, por ejemplo, <http://www.example.com/unlist?id=8822772727> .

Puedes probar algo como:

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


La mayoría de los clientes de correo electrónico solo admiten mailto-links.

Prueba esto, debería funcionar siempre:

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

El RFC especifica que también es posible usar enlaces http. Pero descubrí que si incluyes enlaces http, los clientes de correo electrónico ya no muestran el enlace para darse de baja. Creo que es debido a la posibilidad de que las personas solo tengan acceso al protocolo de correo.

Entonces esto no siempre funciona:

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