phpでメール送信[Pear::Mail]
PearにMailと呼ばれるパッケージがあります。
Mailクラスは、3種類の方法でメールを送信することができます。
- phpの組み込み関数mail()を使用
- SMTPサーバを指定
- ローカルのsendmail
mail()を使用する場合、php.iniの設定が必要になります。
ディレクティブ | デフォルト | 変更の可否 | 対象環境 |
---|---|---|---|
SMTP | localhost | PHP_INI_ALL | Windows環境 |
smtp_port | 25 | PHP_INI_ALL | Windows環境 |
sendmail_from | NULL | PHP_INI_ALL | Windows環境でPHPから送信されるメールにおいて"From:“に使用するメールアドレスを指定します。 |
sendmail_path | DEFAULT_SENDMAIL_PATH | PHP_INI_SYSTEM |
Mailが送信できるか確認します
組み込み関数mail()を使用する場合、次のようにしてメールの送信ができるかを確認します。
<?php
mail("bnote@example.com", "My Subject", "Message\nMessage\nMessage");
?>
ここでは、TO、Subject、本文を指定しています。正しく設定されていればメールが送信されます。
ただし、このままでは日本語は送信できません。Subject等はJIS+Base64などでエンコードする必 要があります。
Pear::Mailでメール送信
Mailクラスは、factory関数でメールクラスのインスタンスを取得します。このfactoryの引数によって組み込み関数かSMTP、SendMailの使用を切り替えます。
factoryの第一引数にmailと指定すると組み込み関数、smtpとすると任意のSMTPサーバ、 sendmailとするとSendMailを使用します。
組み込み関数と同様このままでは日本語が通らないので注意してください。
<?php
require_once "Mail.php";
$recipients = 'bnote@example.com';
$headers['From'] = 'root@example.com';
$headers['To'] = 'bnote@example.com';
$headers['Subject'] = 'My Subject';
$body = "Message\nMessage\nMessage\n";
$objMail =& Mail::factory('mail');
$result = $objMail->send($recipients, $headers, $body);
if (PEAR::isError($result)) {
die($result->getMessage());
}
?>