PHPコーディング

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

2009年08月23日
次はプレーンテキスト形式のメールに、添付ファイルを付けて送ってみます。


ヘッダ部は
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
From: [宛先メールアドレス]\r\n
Reply-To: [返信メールアドレス]\r\n
Bcc: [メールアドレス]\r\n
MIME-version: 1.0\n
Content-Type: multipart/mixed; boundary=[バウンダリ文字列]\n
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

バウンダリ文字列は区切りをあらわす文字列で、メールごとに定義します。
md5(uniqid(rand()));
などでランダムに作成します。

--[バウンダリ文字列]\n
で区切りを表し、

--[バウンダリ文字列]--
で終了を表します。



ボディ部は
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
This is a multi-part message in MIME format\n\n
--[バウンダリ文字列]\n
Content-Type: text/plain; charset=ISO-2022-JP\n
Content-Transfer-Encoding: 7bit\n\n

[JISにエンコードした本文]

//添付ファイル
\n\n
--[バウンダリ文字列]\n
Content-Type: [MIMEファイルタイプ]\n
Content-Transfer-Encoding: base64\n
Content-Disposition: attachment; filename="[添付ファイルにつける名前]"\n\n
chunk_split(base64_encode([base64でエンコードした添付ファイルの内容]))\n
//添付ファイル

--[バウンダリ文字列]--
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


添付ファイルを複数つける場合は、【//添付ファイル】を繰り返します。


プレーンテキストやhtmlファイルなど、テキスト形式のファイルを添付する場合、MIMEタイプは【text/plain】や【text/html】ではなく、【application/octet-stream】にします。


他にも書き方がありますが、これが私には一番分かりやすくしっくりきました。

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