PHP で UTF-8 メールを送信
UTF-8 メール送信の PHP 版です。
実行時引数などは id:fits:20101101 と同様。
サンプルのソースコードは http://github.com/fits/try_samples/tree/master/blog/20101106/
UTF-8 のメール送信
mb_language に uni を設定すれば、UTF-8 の Base64 形式でメール送信されます。
なお、Windows 環境の場合、使用する SMTP サーバーは php.ini の "SMTP" に設定するようで(デフォルト値は localhost)、今回は ini_set を使って設定しました。
send_mail.php
<?php //言語設定(UTF-8/Base64) mb_language("uni"); //内部文字コード mb_internal_encoding("UTF-8"); //文字コードを Shift_JIS から UTF-8 に変換する function to_utf8($str) { return mb_convert_encoding($str, "UTF-8", "SJIS"); } //SMTPサーバーの設定(Windows 環境用の設定) ini_set("SMTP", $argv[1]); $subject = to_utf8($argv[4]); $body = to_utf8(stream_get_contents(STDIN)); //メール送信 mb_send_mail($argv[3], $subject, $body, "From: $argv[2]"); ?>
実行例
> php send_mail.php testserver xxxxfrom@xxx.com xxxxto@xxx.com "テストノート by PHP" < mail.txt