コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

RFC8058ワンクリック購読解除の仕様に関してざっくりまとめる

headerを設定すると何が起きるのか整理する

出典となるRFC

先にまとめ

RFC2369で、メーラーに関してそのメールの購読解除の案内をするヘッダとして List-Unsubscribe ヘッダの仕様がある。このヘッダはメールアドレスを指定しておくとその宛先にメールを送る、URLを指定するとそのページに遷移するというような挙動をサポートするヘッダ。 RFC8058でList-Unsubscribeと合わせて、List-Unsubscribe-Post を利用すると、指定したURIにPostリクエストを送信する仕様が定義されている。

ヘッダについて

List-Unsubscribeヘッダ

RFC2369にて定義されている設定。ユーザが対象のメールの購読を解除するためのアクションを設定する。値として例示されているのは大きくmailtoの形式と、URLの形式。

▼mailtoの形式

List-Unsubscribe: <mailto:list@example.com?subject=unsubscribe>

▼URLの形式

List-Unsubscribe: <http://example.com/list.cgi?cmd=unsub&lst=list>

なお複数の形式も設定することもできる

List-Unsubscribe: <http://example.com/list.cgi?cmd=unsub&lst=list>,<mailto:list@example.com?subject=unsubscribe>

List-Unsubscribe-Postヘッダ

RFC8058に定義されている設定。List-Unsubscribe とセットで利用するヘッダで、セットで送ることでList-UnsubscribeにPostリクエストでワンクリック登録解除が実現できることを示す。なお、フォーマットは以下の通り。

List-Unsubscribe-Post: List-Unsubscribe=One-Click

なお、List-Unsubscribe=One-Click 以外の書き方は現時点では記述が存在しないので書き方はこの一択。

挙動について

RFC8058の挙動に関して意図通りにサポートしていることが明確なのはGmailだが、他のメーラーに関しては対応状況はまちまちの様子である。なかでもOutlookに関しては List-Unsubscribe にURLしかない場合には意味がないものとみなすことがあるとのこと(詳しくは参考リンク参照のこと)

参考リンク