日本語ファイル名も扱える、添付ファイル付きメール送信ライブラリ『AttachmentMail』 |
---|
添付ファイル付きメール送信機能を必要とする案件があり、少しググってみたが有用そうな情報は PEAR::Mail と PEAR::Mail_Mime を使ったものばかり。
PEAR は依存ライブラリをいろいろ入れなきゃいけないので、最近はほとんど使っていない。
そこでシンプルな添付ファイル付きメール送信ライブラリ『AttachmentMail』を作ってみた。
公開しますので、よかったら使ってみてください。
動作に必要な条件
PHP バージョン | 5.x |
---|---|
拡張モジュール | マルチバイト文字列関数 (mbstring) |
仕様
入力文字コード(推奨) | utf-8 |
---|---|
送信される文字コード | iso-2022-jp(jis) |
送信される文字エンコード方式 | 7bit |
添付ファイル付きメールを送信します。(入力が utf-8 の場合)
<?php require_once '/path/to/lib/AttachmentMail.php'; // 本体ライブラリのロード require_once '/path/to/lib/Mime.php'; // Mime ライブラリのロード (AttachmentMail.php内で使用) $to = 'hoge@example.com'; // 宛先メールアドレス $from = 'fuga@example.com'; // 送信元メールアドレス if ( ! AttachmentMail::isValidEmail($to) || ! AttachmentMail::isValidEmail($from)) { // 必要であれば、メールアドレスの妥当性を検証 // : // エラー処理 // : } else { $subject = 'テストメール'; // 件名 $message = 'これはテストメールです'; // 本文 $mail = new AttachmentMail($to, $from, $subject, $message); // インスタンス化 $mail->attach('添付ファイル.xls', '/path/to/attachment.xls'); // 添付ファイル指定:(ファイル名[日本語OK], ファイルパス) $mail->attach('添付ファイル.jpg', '/path/to/attachment.jpg'); // 複数指定可能 $mail->send(); // 送信実行 } ?>
入力が「euc-jp」の場合。(スクリプト自体も euc-jp で保存しておく)
<?php $mail = new AttachmentMail($to, $from, $subject, $message); $mail->setEncoding('euc-jp'); $mail->attach('添付ファイル.jpg', '/path/to/attachment.jpg'); $mail->send(); ?>
バウンスメール(不達メール)の送信先を指定したい場合。
※. 通常のレンタルサーバーは、phpがセーフモードで実行されるため利用できません。
<?php $bounceto = 'bounce@example.com'; $mail = new AttachmentMail($to, $from, $subject, $message, $bounceto); $mail->attach('添付ファイル.jpg', '/path/to/attachment.jpg'); $mail->send(); ?>
追加したいメールヘッダーがある場合。
※. 末尾は「\r\n」で終わらせます。ただし、最終行の末尾に「\r\n」は不要。
<?php $optional_header = 'X-Mailer: Hoge Fuga Mailer'."\r\n"; $optional_header .= 'X-Priority: 3'."\r\n"; $optional_header .= 'X-Status: 250 OK'; $mail = new AttachmentMail($to, $from, $subject, $message); $mail->setOptionalHeader($optional_header); $mail->attach('添付ファイル.jpg', '/path/to/attachment.jpg'); $mail->send(); ?>
MIT Liceseでライセンスされています。
当ライブラリを使って生じた損害、損失等に対して、当方では一切責任を負いません。
AttachmentMail.zip
お問合せ:: メールフォーム