PHPコーディング

【mail】関数で添付なしプレーンテキスト形式メールを送信

2009年08月22日
まずは一番簡単な、添付ファイルのないプレーンテキスト形式のメールを、【mail】関数で送ってみます。


【mail】関数の仕様は
$result = mail($to, $subject, $body, $headers, $parameters);

【$to】は宛先メールアドレス、
【$subject】は件名、
【$body】はメール本文、
【$headers】はヘッダ、
【$parameters】は拡張パラメータです。



添付ファイルのない、プレーンテキスト形式のメールを送るには、MIME形式にする必要はないのですが、送られてくるメールを調べると、MIME形式で送られてくるので、私もMIME形式で送ることにします。

メールの文字コードはJISが一般的なので、メール本文はJISで送信します。


まずはどんなメールにも共通の宛先とサブジェクトです。

宛先メールアドレスへは、メールアドレスを引き渡してやればOKです。

サブジェクトにもし日本語が含まれる場合は、エンコードしてから引渡します。
mb_encode_mimeheader($subject, "EUC", "B");
(EUCへは$subjectの文字コードを引き渡す)


さて、問題のヘッダです。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
From: [宛先メールアドレス]\r\n
Reply-To: [返信メールアドレス]\r\n
Bcc: [メールアドレス]\r\n
MIME-version: 1.0\n
Content-Type: text/plain; charset=ISO-2022-JP\n
Content-Transfer-Encoding: 7bit
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

ここで、from句に日本語宛先名を加える場合ですが、日本語名をサブジェクトと同様にエンコードします。
From: [エンコードした日本語宛先名]<[宛先メールアドレス]>\r\n

もちろんbccしない場合はbccの行はなし、ccする場合は同じように加えます。


メール本文は、JISにエンコードしてから引き渡します。
mb_convert_encoding([メール本文], "JIS", "ASCII,JIS,UTF-8,EUC-JP,SJIS");
本文の最後に【\n】を付加して引き渡します。


拡張パラメータには、リターンパスを設定することにしました。
-fリターンパスメールアドレス


※ []には送信するメールの内容を設定します。