2010-12-06 19 views
14

मैं अपने ई-मेल पर एक सूची-सदस्यता रद्द करने वाला हेडर जोड़ने की कोशिश कर रहा हूं जो भेजा जा रहा है। अब तक मुझे ऐसा करने की कोशिश करने की कोई किस्मत नहीं थी।ई-मेल हेडर में सूची-सदस्यता रद्द करें। कैसे?

मैं अब तक क्या मिला है:

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' की तरह कुछ है। जब मैंने ई-मेल भेजा, तो सूची-सदस्यता रद्द करने के विकल्प को छोड़कर सब कुछ ठीक काम करता है। जो किसी भी मेल क्लाइंट में नहीं दिखाया गया है।

किसी भी सहायता का स्वागत किया जाएगा!

अद्यतन
इस पूरे कोड मैं ईमेल भेजने के लिए उपयोग करते हैं:

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 

लेकिन जब मैं किसी भी क्लाइंट में ईमेल खोलने मैं ग्राहक में सदस्यता समाप्त बटन नहीं देख सकते हैं? क्या मैं कुछ और गलत कर रहा हूँ?

+0

आप "सूची-सदस्यता समाप्त करें" आप प्राप्त ग्राहक पर संदेश का शीर्षक देख जब देख सकते हैं? क्या आप अन्य शीर्षलेख जोड़ सकते हैं? सत्यापित करने के लिए वायरशर्क का उपयोग करने का प्रयास करें कि आप स्थानीय SMTP सर्वर पर सूची-सदस्यता छोड़ने वाले शीर्षलेख भेज रहे हैं। यदि ऐसा है, तो हो सकता है कि आपका स्थानीय एसएमटीपी सर्वर उस हेडर को अलग कर रहा हो। –

+1

आरएफसी केवल उदाहरणों में 'mailto:' यूआरएल दिखाता है, शायद वे केवल 'mailto:' सदस्यता का समर्थन करते हैं? – tripleee

उत्तर

2

List-Unsubscribe website के अनुसार, URL को कोण ब्रैकेट के साथ लपेटा जाना चाहिए, उदा। <http://www.example.com/unlist?id=8822772727>

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

हाय फ्रेडरिक, आपके उत्तर के लिए धन्यवाद। मैंने कोण ब्रैकेट जोड़ने की कोशिश की लेकिन इससे कोई फर्क नहीं पड़ता। मैंने निम्नलिखित किया: 'mailMessage.Headers.Add (" सूची-सदस्यता छोड़ें ", स्ट्रिंग.फॉर्मैट (" <{0}> ", personalUnsubscribeUrl)); mailMessage.HeadersEncoding = एन्कोडिंग। डीफॉल्ट; ' – Gerard

+0

@ गेरार्ड, क्या आपने जांच की है कि आपका यूआरएल वास्तव में 'http: //' से शुरू होता है? मुझे लगता है कि यह अनिवार्य हो सकता है। –

+0

@ फ़्रेडरिक, यूआरएल का उपयोग मैं करता हूं: 'http: // डेमो।स्थानीय होस्ट/organisatie/afmelden-यूआरएल के माध्यम से? id = a7522a34-5c3d-4b38-8ea9-6c3ed360b377' – Gerard

14

अधिकांश ईमेल क्लाइंट केवल mailto लिंक का समर्थन:

आप की तरह कुछ कोशिश कर सकते हैं।

इस प्रयास करें, यह हमेशा काम करना चाहिए:

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

आरएफसी यह भी http-लिंक का उपयोग करना संभव है निर्दिष्ट करता है। लेकिन मुझे पता चला है कि यदि आप http-links शामिल करते हैं, तो ईमेल क्लाइंट अब सदस्यता रद्द करने वाला लिंक नहीं दिखाते हैं। मुझे लगता है कि यह संभावना है कि लोगों को केवल मेल प्रोटोकॉल तक पहुंच है।

तो यह हमेशा काम नहीं करता:

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

मुझे यह वही समस्या थी। मेरे पास हेडर में एक http और mailto रूप था और जीमेल अनसब्सक्राइब करने के लिए लिंक प्रदर्शित नहीं कर रहा था। जब मैंने http को हटा दिया और केवल मेलो यूआरएल के साथ चला गया, तो यह ठीक काम करता था। –

+2

यह पुराना उत्तर है लेकिन इतिहास के लिए ... जीमेल और एमएस आउटलुक (और एमबी अन्य लोकप्रिय ग्राहक) अब सदस्यता रद्द नहीं करते हैं। आपको सम्माननीय प्रेषक की प्रतिष्ठा के लायक होना चाहिए। उसके बाद ईएसपी मई में अपना पता श्वेतसूची में जोड़ सकता है और उपयोगकर्ताओं को यूआई में सदस्यता रद्द करने की अनुमति देता है। इसके अलावा जो लोग डीकेआईएम लागू करते हैं: यदि डीकेआईएम चेक विफल रहता है तो यह इस हेडर के अधिकतम LENGTH उल्लंघन के कारण भी हो सकता है। मैंने अलग-अलग 'सूची-सदस्यता रहित' शीर्षलेख की लंबाई का परीक्षण किया है और पाया है कि स्ट्रिंग 60 वर्णों (यूटीएफ -8) से अधिक होने पर जीमेल विफल हो जाती है। और दोनों 'mailto' और' http' संस्करणों को चेक पास कर दिया गया था। – kokosda

संबंधित मुद्दे