perlでUTF-8メール送信する

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);

コメントを残す