PEAR::Mailを用いて本文やSubjectが日本語のメールを送信します。
日本語のSubject、本文に対応したメール送信プログラム
こちらの記事で作成したメール送信プログラムの日本語対応をします。
コード
<?php
//PEARディレクトリにパスを通してある場合
require_once("Mail.php");
require_once("Mail/mime.php");
//PEARディレクトリにパスを通していない場合
//require_once("C:/php/PEAR/Mail.php");
//require_once("C:/php/PEAR/Mail/mime.php");
$params = array(
"host" => "mail.ixx.jp",
"port" => 25,
"auth" => false
);
$mailObject = Mail::factory("smtp", $params);
$recipients = "internal@intra.ipentec.com";
$header = array(
"To" => "internal@intra.ipentec.com",
"From" => "websystem@robot.ipentec.com",
"Subject" => mb_encode_mimeheader("自動メール送信システム")
);
$body = "このメールはシステムにより送信される自動メールです。\r\nこのメールに返信しないでください。";
$body_cv = mb_convert_encoding($body, "ISO-2022-JP", "auto");
$mailObject -> send($recipients, $header, $body_cv);
?>
解説
基本は
こちらの記事で掲載してあるプログラムをそのまま用います。
$header = array(
"To" => "postman@ipentec.com",
"From" => $fromstr,
"Subject" => mb_encode_mimeheader("自動メール送信システム")
);
部分の
"Subject" => mb_encode_mimeheader("自動メール送信システム")
にてSubjectの文字をMIMEエンコードしています。この処理を入れることで日本語のSubjectに対応できます。
$body = "このメールはシステムにより送信される自動メールです。\r\nこのメールに返信しないでください。";
$body_cv = mb_convert_encoding($body, "ISO-2022-JP", "auto");
にて本文をISO-2022-JPでエンコーディングする処理を追加しています。この処理により本文が日本語の場合に対応できます。
メールフォームを日本語対応にする
こちらの記事で作成したシンプルなメールフォームアプリケーションで件名や本文に日本語が入力された場合に対応します。
コード(mailsend.php)
<html>
<head>
</head>
<body>
<?php
require_once("C:/php/PEAR/Mail.php");
require_once("C:/php/PEAR/Mail/mime.php");
$button = $_POST['button_SendMail'];
if ($button != ""){
$sender_name = $_POST['H_Name'];
$mail_address = $_POST['H_Address'];
$mail_subject = $_POST['H_Subject'];
$mail_body = $_POST['H_Body'];
$params = array(
"host" => "post-central.ipentec.com",
"port" => 25,
"auth" => false
);
$mailObject = Mail::factory("smtp", $params);
$recipients = "postman@ipentec.com";
$fromstr = sprintf("%s <%s>", $sender_name, $mail_address);
$header = array(
"To" => "postman@ipentec.com",
"From" => $fromstr,
"Subject" => mb_encode_mimeheader($mail_subject)
);
$mail_body_cv = mb_convert_encoding($mail_body, "ISO-2022-JP", "auto");
$mailObject -> send($recipients, $header, $mail_body_cv);
echo $fromstr;
echo '<div>メールを送信しました</div>';
}
?>
<a href="mailform.php">Back</a>
</body>
</html>
解説
基本は
こちらの記事で掲載してあるプログラムをそのまま用います。mailsend.phpのみを修正します。修正部分は以下の通りです。
$header = array(
"To" => "postman@ipentec.com",
"From" => $fromstr,
"Subject" => mb_encode_mimeheader($mail_subject)
);
部分の
"Subject" => mb_encode_mimeheader($mail_subject)
にてSubjectの文字をMIMEエンコードしています。この処理を入れることで日本語のSubjectに対応できます。
$mail_body_cv = mb_convert_encoding($mail_body, "ISO-2022-JP", "auto");
$mailObject -> send($recipients, $header, $mail_body_cv);
にて本文をISO-2022-JPでエンコーディングする処理を追加しています。この処理により本文が日本語の場合に対応できます。
著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2024-01-06
作成日: 2011-06-02