以前の記事で書いた通り、PHPでのメール送信はPEAR::Mailをつかっていました。
しかし、最近挙動がおかしいので、sendmailへ切り替えてみました。
概要
php.iniにsendmail.exeのパスを通してsendmail.iniにメール送信サーバの設定を書けば送信できるようになります。
今回はGmailのSMTPサーバを使ってメールを送信してみます。
※C:\xampp に対して設定を行っていきます。各種パスは自分の環境に合わせて読み替えてください。
php.ini 編集
C:\xampp\php\php.ini を下記の通り編集します。
1 2 3 |
;sendmail_path = ↓ sendmail_path = "C:\xampp\sendmail\sendmail.exe -t" |
sendmail.ini 編集
C:\xampp\sendmail\sendmail.ini を下記の通り編集します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
smtp_server=mail.mydomain.com ↓ smtp_server=smtp.gmail.com smtp_port=25 ↓ smtp_port=587 auth_username= auth_password= ↓ auth_username=XXXXXXXXXX@gmail.com auth_password=Googleのパスワード force_sender= ↓ force_sender=XXXXXXXXXX@gmail.com |
smtp_serverにはメール送信サーバを設定します。
今回はGmailのSMTPサーバを使うのでsmtp.gmail.comを設定しました。
また、GmailのSMTPサーバは587ポートを使うのでsmtp_portも変更しました。
force_senderは設定しないと Message is missing sender’s address というエラーが出てメールを送信できないので
忘れずに設定してください。
なお、メールのエラーログは C:\xampp\sendmail\error.log で確認できます。
メール送信
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $to = 'xxxxxxxxxx@gmail.com'; $subject = '件名'; $body = "本文\n改行テスト"; //日本語のメールを送信するのでmb_send_mail()を使う。 if (mb_send_mail($to, $subject, $body)) { echo '成功'; } else { echo '失敗'; } ?> |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXハッシュ値的なものXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX> Please log in via your web brows送信失敗 [C:\xampp\sendmail\error.log] 17/12/11 13:20:55 : <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=XXXXXX<EOL>
XXXXXXXXXXXXXXXXXXXXXXXXXハッシュ値的なものXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Please log in via your web browser and<EOL>then try again.<EOL> Learn more at<EOL> https://support.google.com/mail/answer/78754 z78sm24936154pfk.115 – gsmtp<EOL>
このエラーはGoogleのアカウント設定で「安全性の低いアプリの許可」を有効にすると回避できます。
先ほどメール送信テストをしたことで、sendmail.iniに設定したアドレス宛に 「ブロックされたログインについてご確認ください」 という件名のメールが来ているはずなので、
メールを開き 安全性の低いアプリへのアクセスを許可 をクリックしセキュリティ設定を変更してください。
まとめ
GmailのSMTPサーバを使ってメールを送信する こちらのサイトが非常に参考になりました。
ありがとうございました。
Pingback: PEAR::Mailのバージョンアップ | n-portal