質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SMTP

SMTP(Simple Mail Transfer Protocol)はIPネットワークでemailを伝送する為のプロトコルです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

解決済

1回答

2568閲覧

PHPMailerを使ってSMTP経由でメール送信時の認証エラー

kenny_sayama

総合スコア1036

SMTP

SMTP(Simple Mail Transfer Protocol)はIPネットワークでemailを伝送する為のプロトコルです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2017/11/08 02:13

環境

  • Amazon Linux
  • PHP7.1

経緯

社内で拡張した独自のPHP製フレームワークをxserverからAWSのEC2に移行しました。
その際に独自フレームワークはPHPのmb_send_mail関数でメールが送信されていました。xserverでの運用時は下記のようなソースで動作していました。

php

1$rcd = mb_send_mail( $to, $subject, $body, $from_str); 2return $rcd;

しかし、xserverで度々サーバーダウンがあったため、AWSに移行したのですが、AWSの東京リージョンはSESが使えなかったので、メールサーバは引き続きxserverのメールサーバを参照するようにしました。
メール送信機能はmb_send_mail関数からPHPMailerでSMTP経由でメールが送信出来るように以下のように変更しました。

php

1// PHPMailerのSMTP設定。xserverのメールサーバーを参照出来るように設定 2$mail = new PHPMailer(true); 3$mail->isSMTP(); 4$mail->Host = 'sv〇〇.xserver.jp'; 5$mail->SMTPAuth = true; 6$mail->Username = 'info@hoge.com'; 7$mail->Password = 'hogehoge'; 8$mail->SMTPSecure = 'ssl'; 9$mail->Port = 465; // SSLを使用しているため465に指定 10$mail->CharSet = "UTF-8"; 11$mail->Encoding = "base64"; 12 13// PHPMailerのオブジェクトに値を格納 14$mail->From = $from; // 送信元 15$mail->FromName = $from_name; // 宛名 16$mail->Subject = $subject; // メールタイトル 17$mail->Body = $body; // 本文 18$mail->addAddress($to); // 送信先 19 20// メール送信をsmtp経由に変更。 21$rcd = $mail->send(); 22return $rcd;

起きている問題

上記のソースでxserver経由でメール送信が行われているようなのですが、xserverのwebmailで確認しようとすると「ホストの接続に失敗します」と出て来てしまいます。
SMTP認証に失敗している可能性がある...?

違うサービスでEC2 + Wordpressという組み合わせで、同じくxserverのメールサーバを参照してメール送信を行なっているのですが、そちらは問題なく動いていまいした。しかし、Wordpressの方はPHPMailerは使用しておらず、WordpressのプラグインのWP MAIL SMTPというのを使用しているので、そちらで設定は行なっています。

なので、PHPMailerでの設定が問題なのではないかと質問に至りました。

どこか問題のありそうな箇所はありますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

パッと見、問題ないように見えます。
デバッグレベルを設定してログを出力してみてはどうでしょうか?

php

1$mail->SMTPDebug = 2;

投稿2017/11/08 02:51

ooeok

総合スコア469

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kenny_sayama

2017/11/08 05:06

問題の切り分けが少し間違っていたみたいなのですが、`Delivery Status Notification (Delay)`という内容のdemon mailが送られてきていました。 全くどこの部分に問題があるのか切り分けが難しく、こちらわかりますでしょうか?
ooeok

2017/11/08 05:45

それだけではメールが遅延しているということしか分かりません。 mailer deamonから送られてきたメールには他にも何か書かれているはずです。 それを見れば原因が特定できるかもしれません。 まあでも、まずは宛先($to)を再度確認してはどうでしょうか?
kenny_sayama

2017/11/11 09:57

回答いただきありがとうございました! 自己解決出来ました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問