PHP :: 自前ライブラリ / AttachmentMail

日本語ファイル名も扱える、添付ファイル付きメール送信ライブラリ『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();
 
?>


ライセンス(License)

MIT Liceseでライセンスされています。


ダウンロード(Download)

当ライブラリを使って生じた損害、損失等に対して、当方では一切責任を負いません。
 AttachmentMail.zip


バグ報告、機能追加、ご指摘、ご意見など

お問合せ::  メールフォーム