20

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

どんな援助も大歓迎です!

更新
これは、電子メールの送信に使用するコード全体です。

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
少し調査した後、ヘッダーをmailMessageに入れました。メールを送信すると、次のヘッダーが表示されます。

List-Unsubscribe: <http://demo.localhost/home/hobbymap-gerard/afmelden-voor-nieuwsbrief?id=c786aeb0-554d-4670-94d8-82d6f25a050b>
MIME-Version: 1.0
From: info@test.nl
To: test@gmail.com
Reply-To: info@test.nl
Date: 8 Feb 2011 09:50:22 +0100
Subject: Test met plaatje
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: quoted-printable  

しかし、クライアントで電子メールを開くと、クライアントに登録解除ボタンが表示されませんか? 私は他に何か間違ったことをしていますか?

4

3 に答える 3

18

ほとんどの電子メール クライアントは、mailto-link のみをサポートしています。

これを試してみてください。常に動作するはずです:

mailMessage.Headers.Add("List-Unsubscribe", "<mailto:list@host.com?subject=unsubscribe>");

RFC では、http リンクも使用できると規定されています。しかし、http リンクを含めると、電子メール クライアントに登録解除リンクが表示されなくなることがわかりました。人々がメールプロトコルにしかアクセスできない可能性があるためだと思います。

したがって、これは常に機能するとは限りません。

 mailMessage.Headers.Add("List-Unsubscribe", "<http://www.host.com/list.cgi?cmd=unsub&lst=list>, <mailto:list-request@host.com?subject=unsubscribe>"; 
于 2011-10-18T08:03:36.907 に答える
4

List-Unsubscribe Web サイトによると、URL は山かっこで囲む必要があります<https://www.example.com/unlist?id=8822772727>

次のようなものを試すことができます:

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

スパムとしてフラグが立てられないようにするには、SSL 認定ドメインを持っていることを確認してください。

于 2010-12-06T11:31:31.490 に答える