携帯サイトからメール送信

Posted by muchag | PHP,ガラケー | 2010-05-29 (土) 13:14:55

携帯サイトで PHP からメールを送信すると文字化けするそうで
文字列にあれこれ手を加えなければいけない。

ひとまず覚書を。

  1. //メールエンコーディング
  2. mb_language("ja");
  3. mb_internal_encoding("ISO-2022-JP");
  4.  
  5. //本文エンコード
  6. $mail = base64_encode($mail);
  7. $mail = mb_convert_encoding($mail,"ISO-2022-JP","EUC-JP");
  8.  
  9. //subjectエンコード
  10. $subject = mb_convert_encoding($subject, "ISO-2022-JP","EUC-JP");
  11. $subject = mb_encode_mimeheader($subject,"ISO-2022-JP");
  12.  
  13. //ヘッダエンコード
  14. $header .= "Content-Type: text/plain;charset=ISO-2022-JP¥n";
  15. $header .= "Content-Transfer-Encoding: 7bit¥n";
  16. $header .= "MIME-Version: 1.0¥n";
  17. $header .= "X-Mailer:PHP/" . phpversion() . "¥n";
  18. $header .= "From:" . $admin . "¥n";
  19. $header .= "To:" . $email . "¥n";
  20.  
  21. //メール送信
  22. mail($email,$subject,$mail,$header);

説明)

mb_language(“ja”);で日本語であることを宣言。
mb_convert_encoding();は、内部文字エンコーディングを設定あるいは取得する。

文字コードをISO-2022-JPにするとmac、windows製両方で本文・タイトルが閲覧可能になる。
base64_encode();は本文・タイトルがメールでも読めるように文字を変換する。
mb_encode_mimeheader();は、MIMEヘッダの文字列をエンコードする。

メール送信するプログラムはmail();を使おう。mb_send_mailは自動的に変換されるため、設定のエンコードプログラムが無効になる。

引用元:php-メールのタイトル・本文の文字化け解決

PHP,ガラケー | 2010-05-29 (土) 13:14:55 |

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment