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

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

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

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

PHP

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

メール

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

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

Q&A

解決済

4回答

12445閲覧

PHPMailerでSMTP送信エラー(GMOクラウドVPSサーバー)

kabuki777

総合スコア8

SMTP

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

PHP

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

メール

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

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

0グッド

1クリップ

投稿2018/05/02 03:33

編集2018/05/02 06:37

前提・実現したいこと

◯PHPMailerでSMTP送信をしたいのですができずに困っております。

発生している問題・エラーメッセージ

◯確認済事項
・開発環境:XAMPP環境、テスト環境:ロリポップ環境ではSMTP送信が出来ています。

◯状況
GMOクラウドVPSサーバーでの送信がNGです。
※本番サーバーとなります。

◯エラーメッセージ(ログレベル1)
Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

該当のソースコード

$mailer = new PHPMailer(); $mailer->CharSet = "iso-2022-jp"; $mailer->Encoding = "7bit"; $mailer->IsSMTP(); $mailer->SMTPDebug = 1; $mailer->SMTPAuth = true; //(下記3行テストもNG) //$mailer->SMTPAuth = false; //(一つずつ有効化して確認) //$mailer->SMTPSecure = false; //(一つずつ有効化して確認) //$mailer->SMTPSecure = 'tls'; //(一つずつ有効化して確認) $mailer->Host = SMTP_HOST; // 定数定義のホスト名 $mailer->Port = SMTP_PORT; // 定数定義(587) $mailer->Username = SMTP_USER; // 定数定義のメールアカウント $mailer->Password = SMTP_PASS; // 定数定義のパスワード $mailer->From = $from_email; // 送信元メールアドレス $mailer->FromName = mb_encode_mimeheader ( $from_name, "ISO-2022-JP" ); $mailer->Subject = mb_encode_mimeheader ( $subject, "ISO-2022-JP" ); $mailer->Body = mb_convert_encoding ( $text, "JIS", "UTF-8" ); $to_email_arr = explode ( ",", preg_replace ( "/\s/", "", $to_email ) );

試したこと

GMOクラウドVPSサーバー、Pleskのメールサーバー設定
「すべての IP アドレスに対してポート 587 で SMTP サービスを有効化する」にチェックを入れています。

補足情報(FW/ツールのバージョンなど)

PHP7.1.0(PHP5.5.52でもNG)

【追記事項1533】

◯Postfix設定関連
/etc/postfix/main.cf

下記の設定のみ行なっております。(Postfix再起動済)
myhostname・・・mail.ドメイン名
mydomain・・・ドメイン名

◯その他
SMTPを自サーバーのものではなく、他サーバーのSMTPに設定すると送信ができています。

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

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

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

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

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

m.ts10806

2018/05/02 06:03

コードはコードブロック```で囲ってください(分からなければコード部分を選択し<code>ボタンを押してください)
kabuki777

2018/05/02 06:26

コードブロック設定しました。
kabuki777

2018/05/02 06:28

FirewallはPlesk上でデフォルトのまま何もしていません。『SMTP (メール送信)サーバ 全て からの着信を 許可 します』・・・となっています。
guest

回答4

0

すでに解決されてはいるのですが、類似例に引きあたっていたので参考までに。

gmo 全体で TLS 1.0/1.1 を無効にし、1.2 のみ有効に変更しているようです。
これに伴いセキュリティ強化が行われ、gmo の SMTP サーバからメールを送信する場合、Host と SMTPOptions.ssl.peer_name とがマッチしないと、ドメインが違うとしてエラーになるようです。

PHP

1$mail->SMTPAuth = true; 2$mail->SMTPSecure = 'tls'; 3$mail->SMTPOptions = [ 4 'ssl' => [ 5 'verify_peer' => false, 6 'verify_peer_name' => false, 7 'allow_self_signed' => true, 8 'peer_name' => '*.gmoserver.jp', // この設定が必要 9 ], 10]; 11$mail->Host = {gmoserver.jp としてのメールサーバのホスト名}

※verify_peer_name が false なのに、一致してないと弾かれてしまいました

ご参考までに。

投稿2018/11/22 01:52

tacsheaven

総合スコア13703

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

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

kabuki777

2018/11/22 02:04

情報ありがとうございました。
guest

0

自己解決

★原因判明

本番サーバー・・・オレ証だったため

投稿2018/11/22 01:15

kabuki777

総合スコア8

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

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

CHERRY

2018/11/22 02:02 編集

「自己署名証明書」を使っていたからエラーになっていたということを書かれているのだと思いますが、Webサーバーの SSL 証明書の話ですか? Postfix の SSL 証明書の話ですか?
kabuki777

2018/11/22 02:19

postfixのサーバー証明書となります。 (Webサーバーではクイック認証SSL使用)
CHERRY

2018/11/22 02:25

補足ありがとうございました。
guest

0

こういう事例もあります:
PHPMailer の SMTP connect() failed. | gworks web site

投稿2018/05/02 06:11

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kabuki777

2018/05/02 06:45

ご回答ありがとうございます。 ちょっと、勉強不足でよくわからないのですが、 SSLはレッツエンクリプトを使用しています。 phpinfo()でのopensslの設定状況ですが、 OpenSSL support       enabled OpenSSL Library Version   OpenSSL 1.0.1e-fips 11 Feb 2013 OpenSSL Header Version   OpenSSL 1.0.1e-fips 11 Feb 2013 Openssl default config    /etc/pki/tls/openssl.cnf ・・・となっています。 この場合もご参考サイトの内容を実施した方が良いでしょうか? (この辺も知識がなく、すみません)
退会済みユーザー

退会済みユーザー

2018/05/02 06:51

phpinfo() でopensslが表示されるようなら、この事例ではないと判断できるのではないかと。
guest

0

はじめまして

//$mailer->SMTPAuth = false;
//$mailer->SMTPSecure = false;
//$mailer->SMTPSecure = 'tls';

ここで コメントをはずし

$mailer->SMTPAuth = false;
$mailer->SMTPSecure = false;

このように、この設定2つをを有効にして実行するとどうなりますか?


怪しいと思ったのは

//$mailer->SMTPSecure = false;
//$mailer->SMTPSecure = 'tls';

//なしで、有効になっていたため、後ろの代入式 $mailer->SMTPSecure = 'tls'
が実行されて、エラーが発生した?

投稿2018/05/02 03:42

kawakawa2018

総合スコア1195

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

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

kabuki777

2018/05/02 04:50

ご回答ありがとうございます。 説明不足ですみません、同じメソッドは1つづつ試しております。 SMTPAuth・・・true、falseの2パターン SMTPSecure・・・false、tls、記載なしの3パターン ★改めて、下記設定を実行しましたが、NGでした。 $mailer->SMTPAuth = false; $mailer->SMTPSecure = false; ◯XAMPPとロリポップでは下記で動作しています。 SMTPAuth・・・true。 SMTPSecure・・・記載なし。
kawakawa2018

2018/05/02 05:01

普通はすんなりいくのですが・・・ 何か見落としてますね、お互い(苦笑) また気がついたこと、試してほしいことが思いつけば コメントに挙げます。
kabuki777

2018/05/02 06:48

色々とありがとうございます。 質問に追記したのですが、この本番サーバーにて、他のサーバー(ロリポップのテストサーバー)のSMTPを設定すると送信ができるのですが、 postfixの設定など間違えると送信できないなどあるのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問