mailto本文での改行 ドコモのN、Pで送信に失敗します

mailtoのbody内で改行をさせるには『 %0D%0A 』を使います。
これは CR+LF(\r\n)をURLエンコードしたものです。

[参考記事] PHPでHTMLメールを送る方法
[参考記事] mb_send_mailでCCやBCCを指定する 表示名を指定する
[参考記事] mail関数やmb_send_mail関数でReturn-Pathを設定する方法
[参考記事] PCからデコメールを送るときの仕様
[参考記事] mailtoの使い方
[参考記事] 携帯サイトでのmailtoの使い方

RFCの仕様ではメールの改行コードはCR+LFとなります。
RFC2821(SMTP)/RFC1939(POP3)/RFC2822(Internet Message Format)

LF(\n)のみでURLエンコードした場合でもメール送信できることはありますが、LFのみだと「ドコモのN、Pシリーズ」でメールの送信ができないことがあります。

送信先メールアドレスのメールサーバがqmailのときにこの現象は起こります。設定にもよると思いますがPostfixでは起こりません。[確認済み]
正しい例

<a href="mailto:xxx@example.com?subject=xxx&body=xxx%0D%0Axxx%0D%0A">


送信されない例

<a href="mailto:xxx@example.com?subject=xxx&body=xxx%0Axxx%0A">

「送信しました」というダイアログが表示され、メールの送信処理には成功するのですが、 送信から6時間後に次のようなエラーメールが返ってきて実際の送信はできません。

From: iモードセンター
Subject: 送信メールエラー

相手先ホストの都合により送信できませんでした。
Receiver's host can't accept your mail

宛先: xxx@example.com
件名: xxx

関連記事

スポンサーリンク

unregister_function() 動的に登録されたテンプレート関数プラグインを未登録にします

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る