perlでUTF-8メール送信する。sendmail版です。
use MIME::Base64; # ←インストールされていることが前提 sub send_email_hashimoto { local($email,$subject,$msg,$headers,$frommail); $email = $_[0]; $subject = $_[1]; $msg = $_[2]; $headers = $_[3]; $frommail = $_[4]; $sendmail = "/usr/sbin/sendmail -tf $frommail"; $eol = ""; $subject_b = encode_base64($subject,$eol); $subject_b = "=?utf-8?B?" . $subject_b . "?="; open (SENDMAIL, "| $sendmail"); print SENDMAIL $headers; print SENDMAIL "To: $email\n"; print SENDMAIL "Subject: $subject_b\n\n"; # ヘッダー部分終了のため、改行を「\n\n」と重ねます。 print SENDMAIL encode_base64($msg); # 本文もbase64エンコードしておく close(SENDMAIL); }
上記サブ関数を下記のように利用します。
$frommail = "送信元メールアドレス"; $email = "送信先メールアドレス"; $subject ="メールタイトル"; $msg = "メール本文"; $headers = "From:$frommail\nMIME-Version: 1.0\nContent-Type: text/plain; charset=utf-8\nContent-Transfer-Encoding: base64\n"; send_email_hashimoto($email,$subject,$msg,$headers,$frommail);