2010-12-06 23 views
14

Gönderilmekte olan e-postama bir Listeden Kaldırma-dışı başlık eklemeye çalışıyorum. Şimdiye kadar yapmaya çalışan şansım yoktu.Liste-e-posta başlığındaki abonelikten çık. Nasıl?

şimdiye kadar neyin var:

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' gibi bir şeydir. E-postayı gönderdiğimde, liste-abonelikten çıkma seçeneği haricinde her şey iyi çalışıyor. Hangi herhangi bir posta istemcisinde gösterilmez.

Her türlü yardım memnuniyetle karşılanacaktır!

GÜNCELLEME
Bu benim e-posta göndermek için kullanmak bütün kodudur: Ben MailMessage içine kafayla var biraz araştırmadan sonra

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

GÜNCELLEME 2
.

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 

Ama her istemci e-postayı açtığınızda ben istemci abonelikten düğmesini göremiyorum: Ben bir e-posta gönderdi zaman aşağıdaki başlıkları görebilir? Başka bir şey yanlış mı yapıyorum?

+0

Eğer "Liste-Aboneliği" aldığınız istemcide ileti başlıklarını kontrol görüyor musunuz? Başka başlık ekleyebilir misiniz? List-Abonelik iptali üstbilgisini yerel SMTP sunucusuna gönderdiğinizi doğrulamak için WireShark kullanmayı deneyin. Öyleyse, yerel SMTP sunucunuzun bu başlığı çıkarması olabilir. –

+1

RFC yalnızca örneklerde "mailto:" URL'lerini gösterir, belki de sadece "mailto:" aboneliğini iptal eder? – tripleee

cevap

2

List-Unsubscribe website'a göre, URL, köşeli parantezler ile sarılmalıdır, örn. <http://www.example.com/unlist?id=8822772727>.

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

Merhaba Frederic, Cevabınız için teşekkür ederiz. Köşeli parantezleri eklemeyi denedim ama fark yaratmıyor. Aşağıdakileri yaptım: 'mailMessage.Headers.Add (" List-Abonelik iptali ", String.Format (" <{0}> ", personalUnsubscribeUrl)); mailMessage.HeadersEncoding = Encoding.Default; ' – Gerard

+0

@Gerard, URL’nizin aslında http: // 'ile başladığını kontrol ettiniz mi? Zorunlu olabileceğini düşünüyorum. –

+0

@Frederic, Kullandığım url: 'http: // demo.localhost/organisatie/afmelden-via-url? id = a7522a34-5c3d-4b38-8ea9-6c3ed360b377' – Gerard

14

çoğu e-posta istemcileri sadece mailto bağlantıları destekler:

Sen gibi bir şey deneyebilirsiniz.

bu deneyin, her zaman çalışması gerekir:

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

RFC ayrıca http-link kullanmak mümkündür belirtir. Ancak, http-linkleri eklediyseniz, e-posta istemcilerinin artık abonelikten çıkma bağlantısını göstermediğini öğrendim. Bence insanlar posta protokolüne sadece erişime sahip olma ihtimalinden dolayı.

Yani bu her zaman işe yaramıyor:

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

Aynı sorunu yaşadım. Başlıkta hem http, hem de posta formu vardı ve GMail abonelikten çıkmak için bağlantıyı göstermiyordu. Http kaldırdığımda ve sadece mailto url ile gittiğimde, iyi çalıştı. –

+2

Bu eski bir cevaptır ama tarih için ... GMail ve MS Outlook (ve diğer popüler müşteriler) artık abonelikten çıkma bağlantısını göstermez. Onurlu gönderenin itibarını hak etmelisin. Bundan sonra ESP, adresinizi beyaz listeye ekleyebilir ve kullanıcıların kullanıcı arayüzünde abonelikten çıkma bağlantısını görmesini sağlayabilir. Ayrıca, DKIM uygulayanlar için: DKIM çeki başarısız olursa, bu başlığın maksimum UZUNLUK ihlali de olabilir. Farklı "Liste-Abone Olma" başlık uzunluğunu test ettim ve eğer dize 60 karakterden uzunsa (UTF-8) GMail'in DKIM'de başarısız olduğunu keşfettim. Ve hem 'mailto' hem de '' 'versiyonları çek geçti. – kokosda

İlgili konular