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-8Base64 形式でメール送信されます。

なお、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