はじめに
今までPHPでmb_send_mail()を使って手抜きメール送信をしていたのですが、迷惑メールに入るという事態が発生してしまいました。
そこでXServerでSPF認証付きメールをPHPから送れるよう対応しました。
そのときの内容をここにまとめておきます。
1.XServerでメールアカウントを作る
Xserverでメールアカウントを作ります。
以下のXServer公式の説明を参照してください。
2.SPF設定を追加する
XServerにSPF認証の設定を追加します。
以下のリンクの『DNSレコードへのSPF設定』の項目を参照してください
以上で、SPF認証されたメールが送信できるようになりました。
作成したメールアカウントを使ってメールを送信すれば、SPF認証されたメールが送信できます。
次に作成したメールアカウントをPHPから使えるようにします。
3.PHPでSPF認証付きのメールを送信する
PHPからSPF認証付きのメールを送信するには、先ほど作成したメールアカウントを使って、メールを送信すればよい、というところまできました。
しかし、作成したメールアカウントをPHPから使うためには、メールアカウントの認証を突破する必要があります。
しかしこの認証(SMTP認証)を突破するのが曲者で、PHPの標準関数を使うだけでは難しいです。
そこでPHPMailerというライブラリを使うことにしました。
使い方は簡単で、phpファイルをダウンロードして、それを自分のphpから読み込むだけです。
以下に、PHPMailerの使用方法を記載しました。

ちなみに、PHPMailerに設定するXServerのSMTPサーバ名や、そのポート番号などはここに載っています。
これらをPHPMailerに設定してやれば、作成したメールアカウントからメール送信ができるようになるはずです。
PHPMailerの使用例
念のため、PHPMailerの設定のどこをいじったかが分かるようにソースコードを載せておきます。
//PHPMailerの使用 $mailer = new PHPMailer(true); try { $mailer->CharSet = 'UTF-8'; $mailer->SMTPDebug = 0; $mailer->isSMTP(); $mailer->Host = 'sv****.xserver.jp'; //SMTPサーバを入れます $mailer->SMTPAuth = true; $mailer->Username = 'メールアカウント@ドメイン名'; //SMTP user を入れます $mailer->Password = 'パスワード'; // SMTP password を入れます $mailer->SMTPSecure = "ssl"; // "ssl"にします $mailer->Port = 465; // 465を使います //送信者や宛先の設定 $mailer->setFrom('メールアカウント@ドメイン名', mb_encode_mimeheader('送信者')); $mailer->addAddress('you@example.com');//送り先 //メール内容 $mailer->isHTML(true); // HTMLメール有効 $mailer->Subject = mb_encode_mimeheader('件名'); $mailer->Body = 'HTML形式の本文 <b>太字</b>'; $mailer->AltBody = '非HTML受信者用本文'; $mailer->send(); //送信 echo 'Message has been sent'; } catch (Exception $e) { echo 'Message could not be sent. Mailer Error: ', $mailer->ErrorInfo; }
以上で、XServerでPHPを使って、SPF認証されたメールを送れるようになりました。
コメント