PEAR Mail を使ってみる

概要

PEAR Mail はメール送信プログラム用のモジュールです。
factory メソッドで Mail オブジェクトを作成して、send メソッドでメールを送信します。

目次

Mail オブジェクトを作成

require_once 'Mail.php';
object &factory (string $backend [, array $params = array()])
引数
string $backend:バックエンド名 "mail"、 "sendmail"、"smtp"
array $params:バックエンド固有のパラメータ配列
戻り値
特定の Mail インスタンス、 または失敗した場合は PEAR_Error オブジェクト

バックエンド名:string $backend

mailPHP の組込関数 mail() を使用して送信します
sendmailsendmail プログラムにより送信します
smtpSMTP サーバに直接接続してメールを送信します

バックエンド固有のパラメータ配列:array $params

mail
セーフモードが無効の場合、 $params は PHP mail() 関数の 5 番引数として渡されるでしょう。 $params が配列の場合、 その要素はスペース区切りの文字列として連結されるでしょう。
sendmail
$params["sendmail_path"] システム上での sendmail プログラムの場所。デフォルト: /usr/bin/sendmail
$params["sendmail_args"] sendmail プログラムへ渡す追加パラメータ。 デフォルト: -i
$params['sendmail_path'] = '/usr/sbin/sendmail';
$mail_object = Mail::factory('sendmail', $params);
smtp
$params["host"]接続するサーバ名。 デフォルト:localhost
$params["port"]接続するポート番号。 デフォルト:25
$params["auth"]SMTP 認証を使用するかどうか。 デフォルト: FALSE
$params["username"]SMTP 認証で使用するユーザ名。
$params["password"]SMTP 認証で使用するパスワード。
$params["localhost"]EHLO あるいは HELO を送信する際に使用する値。 デフォルト: localhost
$params["timeout"]SMTP 接続のタイムアウト。 デフォルト: NULL (タイムアウトしない)
$params["verp"]VERP を使用するかどうか。デフォルト: FALSE
$params["debug"]SMTP デバッグモードを使用するかどうか。デフォルト: FALSE
$params["persist"]SMTP 接続を、send() メソッドの複数回呼出しで持続させるかどうか指示します。
$params = array(
  "host" => "mail.hogehoge.com",
  "port" => 587,
  "auth" => true,
  "username" => "user";
  "password" => "pass";
);
$mail_object = Mail::factory("smtp", $params);

メールを送信

Mail::send()
mixed send (mixed $recipients, array $headers, string $body)
引数
mixed $recipients:配列かカンマで区切った受取アドレスの文字列
array $headers:ヘッダの連想配列
string $body:メール本文
戻り値
boolean TRUE か、または失敗した場合は PEAR_Error オブジェクトです

メールの送信先:mixed $recipients

実際に送信するメールアドレスです。ヘッダーの「To」や「Cc」で指定したメールアドレスではなく「recipients」に指定したメールアドレスにメールが送信されます。

メールのヘッダー:array $headers

メールヘッダーに日本語が含まれる場合は、「mb_encode_mimeheader」関数を使って「ISO-2022-JP」の"B" にエンコーディングします。

Toメールの送信先
Ccメールの送信先(カーボンコピー)
Bccメールの送信先(ブラインドコピー)
Reply-Toメールの返信先
Fromメールの差出人
Subjectメールの件名

メールの本文:string $body

メール本文に日本語が含まれる場合は、「mb_convert_encoding」関数を使って「ISO-2022-JP」 にエンコーディングします。

PEAR Mail オブジェクトでは単純な内容のメールしか送信できません。実際にはMail_Mimeクラスなどのパッケージで拡張してメールを送信します。

$recipients = "guest@fugafuga.com, admin@hogehoge.com";
$headers = array(
  "To" => "guest@fugafuga.com",
  "From" => "admin@hogehoge.com",
  "Subject" => mb_encode_mimeheader("テストメール")
);
$body = "メールのテストです。";
$body = mb_convert_encoding($body, "ISO-2022-JP", "auto");

$mail_object -> send($recipients, $headers, $body);

投稿日:

ページのトップへ戻る