phpから mail() や mb_send_mail() で、メールを送ると・・・
迷惑メールに分類されたり、SPAMとしてブロックされて届くことすらなかったり、なかなかうまくいきません。
確実にメールを届けるには、面倒ですが実際につかっているSMTPサーバー経由でメール送信するのが、もっとも有効。ということで、その方法です。
###準備
- 送信用のメールアカウントを用意。ほとんどのサーバー業者の提供するSMTPサーバーは認証が必要なはずなので、メールアカウントを作っておく。
- Qdmail を ここから ダウンロードする。
- Qdsmtp を ここから ダウンロードする。
###コード
PHP
//Qdmailをロード
require_once('qdmail.php');
//Qdsmtpをロード
//(ドキュメントには、記述不要とかいてあるが、書かないとうまくいかないことがあった)
require_once('qdsmtp.php');
//メール送信関数
// $to:送信先メールアドレス
// $subject:件名(日本語OK)
// $body:本文(日本語OK)
// $fromname:送信元名(日本語OK)
// $fromaddress:送信元メールアドレス
function mailsender($to,$subject,$body,$fromname,$fromaddress){
//SMTP送信
$mail = new Qdmail();
$mail -> smtp(true);
$param = array(
'host'=>'(SMTPサーバー名)',
'port'=> 587 ,
'from'=>'(Return-Pathにはいるメールアドレス)',
'protocol'=>'SMTP_AUTH',
'user'=>'(SMTP認証ユーザー名)',
'pass' => '(SMTP認証パスワード)',
);
$mail ->smtpServer($param);
$mail ->to($to);
$mail ->subject($subject);
$mail ->from($fromaddress,$fromname);
$mail ->text($body);
$return_flag = $mail ->send();
return $return_flag
}
補足
- SMTPサーバーの制約によっては、送信元メールアドレスが別ドメインだと蹴られる可能性あり。
- SMTPサーバー経由でのメール送信数に制限があるサーバー業者が多いので注意。