PHPでメール送信するときは
・mb_send_mail
・Qdmail
がよく使われる気がする。
mb_send_mail は SMTPサーバーを指定することは可能だけどSMTP認証ができません!
Qdmailはもうライブラリが古い!
ということで PHPMailer を使ってみた。
https://github.com/Synchro/PHPMaile
SMTP認証
LOGIN, PLAIN, NTLM, CRAM-MD5 and Google’s XOAUTH2 over SSL and TLS
が使えます。Postfixの解説サイトってPLAIN or CRAM-MD5 が多い気がするので困ることはないと思います。
Google’s XOAUTH2 ってなんなんでしょうか。
XOAUTH2
メールの送受信にパスワードなんていらない
こちらに詳しく書かれていました。
新しく取得したGmailアカウントにおいて、これまでの一般的なメーラーではもはやメールの送受信はできません。いや、完全にできないわけではなく、とある設定を変更しないと使えないようになっています。その設定名ときたらなんと、
「安全性の低いアプリのアクセス」です。
メーラーを使うためにはこの設定を「オン」にしなければなりません。
なんとも精神衛生上よろしくない行為ですよね。
通常この設定は「オフ」になっていて、ユーザー名とパスワードで認証する従来のメーラーはアクセスできず、いわゆる”安全性の高い”アプリしかアクセスできません。
では安全性の高いアプリとはなんでしょうか?
その答えはXOAUTH2認証を用いたメールアプリです。
らしいです。
PHPMailerでの使い方は公式Githubにあります。
https://github.com/PHPMailer/PHPMailer/wiki/Using-Gmail-with-XOAUTH2
DKIM
DKIMも使えます!
SPFとはちょっと違いますがまぁスパム認定されにくくなります。
多くのオープンソースでも使われ WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla! and many more らしいです。
CCやBccを使うことも想定されていた作りになっており、添付ファイルもパスを記述するだけです。
軽く使ってみた
IsSMTP();
$mailer->Host = 'ssl://smtp.gmail.com:465';
$mailer->SMTPAuth = TRUE;
$mailer->Username = 'Gmail User name';
$mailer->Password = 'Gmail User password';
$mailer->From = 'From';
$mailer->FromName = mb_encode_mimeheader(mb_convert_encoding("${youken}", "JIS", "UTF-8"));
$mailer->Subject = mb_encode_mimeheader(mb_convert_encoding("${youken}", "JIS", "UTF-8"));
$mailer->Body = mb_convert_encoding("${content}", "JIS", "UTF-8");
$mailer->AddAddress('atesaki'); // 宛先
if ($mailer->Send()) {
header("Content-Type: text/plain; charset=UTF-8");
print "情報の送信に成功しました。返信は48時間以内に行います。";
exit;
} else {
header("HTTP/1.0 400 Bad Request");
header("Content-Type: text/plain; charset=UTF-8");
print "情報の送信に失敗しました。復旧するまで今しばらくお待ち下さい";
}
} else {
header("HTTP/1.0 400 Bad Request");
header("Content-Type: text/plain; charset=UTF-8");
print "情報の送信に失敗しました。復旧するまで今しばらくお待ち下さい";
}
?>
今回はSMTPサーバーにGoogleを使いました。
XOAUTH2を使っていないので安全性の低いアプリへのアクセスをONにしています。
いと便利です。