2010-12-06 24 views
14

送信されている電子メールに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オプションを除いてすべて正常に動作します。どのメールクライアントにも表示されません。

何か援助を歓迎します!私ははMailMessageにヘッダを持って少し研究した後

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

はUPDATE 2

UPDATEは、これは私が電子メールを送信するために使用し、全体のコードです。私は、電子メールを送ったとき、私は以下のヘッダを見ることができます:

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

あなたは「リスト・解除」を参照していますか?他のヘッダーを追加できますか? WireSharkを使用して、List-UnsubscribeヘッダーをローカルSMTPサーバーに送信していることを確認してください。その場合は、ローカルSMTPサーバーがそのヘッダーを削除している可能性があります。 –

+1

RFCは、例では 'mailto:' URLのみを表示していますが、 'mailto:' unsubscribesだけをサポートしているのでしょうか? – 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(" List-Unsubscribe "、String.Format(" <{0}> "、personalUnsubscribeUrl)); mailMessage.HeadersEncoding = Encoding.Default; ' – Gerard

+0

@Gerard、あなたのURLが実際に 'http://'で始まっていることを確認しましたか?私はそれが必須かもしれないと思う。 –

+0

@Frederic、 私が使用するURLは 'http:// demoです。localhost/organisatie/afmelden-via-url?id = a7522a34-5c3d-4b38-8ea9-6c3ed360b377' – Gerard

14

ほとんどの電子メールクライアントのみの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>"; 
+1

私も同じ問題がありました。私はヘッダーにhttpとmailtoの両方の形式を持っていましたが、GMailは購読解除のリンクを表示していませんでした。私がhttpを削除して、mailtoのURLだけに行ったとき、うまくいきました。 –

+2

これは時代遅れの回答ですが、歴史のために... GMailとMS Outlook(そして他の人気のあるクライアント)は、もはや購読解除のリンクを表示しません。あなたは名誉ある送信者の評判に値するはずです。その後、ESPはあなたのアドレスをホワイトリストに追加して、ユーザーがUIの購読中止リンクを見ることを許可してもよい(MAY)。さらに、DKIMを実装する人にとって:DKIMチェックが失敗した場合、このヘッダーの最大長違反の可能性もあります。私は別の 'List-Unsubscribed'ヘッダー長をテストし、文字列が60文字(UTF-8)より長い場合、GMailがDKIMに失敗することを発見しました。そして、 'mailto'と' http'バージョンの両方がチェックに合格しました。 – kokosda

関連する問題