PHPのPEARモジュール、Mailを使用して、SMTP経由でメールを送信する方法を紹介しています。
通常では、PHPのmb_send_mail関数などを使用すると、Webサーバーからメールが送信されます。
php.ini のSMTPを変更することで、別のSMTPサーバーからメールを送信することができます。
しかし、php.iniは変更したくない、プログラムの中でSMPTを指定したい、ということも良くあります。
そういった時のために、プログラムでSMTPを指定してメールを送信する方法を掲載します。
SMTPとは、インターネットなどで電子メールを送信するためのプロトコルです。
プロトコルとは、コンピューター同士が通信をするための手順や規約のこと。
サーバー間でメールを転送する際に、もっとも広く利用されています。
通常はTCPのポート番号25を利用します。
PEAR Mail から、Mailモジュールをダウンロードします。
ダウンロードしたファイルを展開して、Mail.phpとMailディレクトリをWebサーバーの任意の箇所に配置します。
例:
/home/pbtimes/pear/Mail/
/home/pbtimes/pear/Mail.php
下記はメールを送信するためのメソッドのサンプルとなります。
class Sendmail
{
public function mail_sender($to, $subject, $body)
{
require_once '/home/pbtimes/pear/Mail.php'; //[Mail.phpのパス]
$mail_from = 'info@pb-times.jp'; //メールのFromアドレス
$SMTP = 'xxx.xxx.xxx.xxx'; SMTPサーバーのホスト
$org = mb_internal_encoding();
mb_internal_encoding("ISO-2022-JP");
$subject = mb_encode_mimeheader(mb_convert_encoding($subject, "ISO-2022-JP", "UTF-8"),"ISO-2022-JP","B","¥r¥n");
mb_internal_encoding($org);
$body = mb_convert_encoding($body, "ISO-2022-JP", "UTF-8");
$params = array(
"host" => $SMTP,
"port" => "25",
"auth" => false,
"username" => "",
"password" => "",
"sendmail_args" => "f"
);
$mailObject = Mail::factory("smtp", $params);
$headers = array(
"To" => $to,
"From" => $mail_from,
"Subject" => $subject,
"Return-Path" => $mail_from
);
$mailObject->send($to, $headers, $body);
}
}
作成したメソッドを使用して、メールを送信します。
$to = "to@pb-times.jp"; //送信先アドレス
$subject = "件名";
$body = "内容";
$sendmail = new Sendmail();
$sendmail->mail_sender($to, $subject, $body); //送信