PHPでメール送信する場合には、いくつかの方法があります。
- PHPのmail関数
- PHP設置サーバーのsendmailを直接操作
- 他のSMTPサーバーから送信
どちらにせよ、最終的にすべてsendemailがかかわります。SMTPサーバーの正体は、他のサーバーで動くsendemailだったりするわけですから。
で、オールマイティなのは、SMTP送信です。
RFCで規格が定められており、例えメールサーバーがsendmailでなくても、規格通りに通信ができます。
離れた別のSMTPサーバーを使えるので、PHPのmail関数やPHP設置サーバーにsendmailがなくても、メールを送信することができます。
SMTPサーバーは、例えば、自分が使用しているプロバイダの送信サーバーも使えるし、他に借りているレンタルサーバー、もちろん自前設置の送信サーバも使えます。
ウィンドウズ(windows)環境で、メール送信サーバーを設置するのが面倒な場合などは、お手軽にSMTP送信できるQdmailは役に立つはずです。
簡単高機能SMTPメール送信ライブラリ-Qdsmtpを使います。
使い方はいたって簡単です。
下記にサンプルコードも記載しますが、QdsmtpのQdmailと組み合わせて使うには、もご参照ください。
追記:さらにディープにSMTP連携について知りたい場合は、SMTP玄人的連携法をご参照下さい。
関数型のサンプルは、qd_send_mailでSMTP送信をご参照下さい。
require_once('qdmail.php');
$mail = & new Qdmail();
$mail -> smtp(true);
$param = array(
'host'=>'smtp.example.com',//メールサーバー
'port'=> 587 , //これはSMTPAuthの例。認証が必要ないなら 25 でOK。
'from'=>'from@example.com', // Return-path: になります。
'protocol'=>'SMTP_AUTH',// 認証が必要ないなら、'SMTP'
'user'=>'user_id@example.com', //SMTPサーバーのユーザーID
'pass' => 'sasuga99', //SMTPサーバーの認証パスワード
);
$mail -> smtpServer($param);
$message="メールの中身をここに書きます。";
$mail ->to('toaddress@example.com','スポック宛');
$mail ->subject('メールのテスト');
$mail ->from('from@example.com');
$mail ->text($message);
$return_flag = $mail ->send();
ポイント、 Qdsmtpをインクルードする必要はありません。include_pathに含まれた場所にqdsmtp.phpが置いてあれば、Qdmailが勝手にインクルードします。
もし、自動インクルードがうまくいかないようだったら、ユーザー側でインクルードしてみてください。
インクルードされていれば、QdSmtpを new する必要はありません。Qdmailが自動で、QdSmtpのインスタンスを作成します。
SMTP AUTH以外のノーマルSMTP,POP BEFORE SMTPをお使いの場合は、下記をご参照ください。
QdSMTP初期設定
SMTPパラメータのfromは、Return-path:ヘッダとなり、$mail->form(...)の方は、From:ヘッダとなります。ご留意ください。