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

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

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

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

メール

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

解決済

PHPMailerを使ってXAMPPローカル環境上でメールを送信したい

Michi1090
Michi1090

総合スコア3

PHP

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

メール

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

2回答

0評価

0クリップ

577閲覧

投稿2021/12/21 16:47

編集2021/12/22 07:44

前提・実現したいこと

XAMPPのローカル環境上で、PHPMailerを使ってyahooメールからgmailにメールを送信したい。

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

送信エラー'SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting'

該当のソースコード

PHP

//mail.php <?php require 'php-library/Exception.php'; require 'php-library/PHPMailer.php'; require 'php-library/SMTP.php'; use PHPMailer\PHPMailer\PHPMailer; /** メールの送信テスト */ /// メーラーインスタンス作成 $mailer = new PHPMailer(); /// 文字コード $mailer->CharSet = 'UTF-8'; $mailer->Encoding = '7bit'; /// SMTPサーバーを利用する $mailer->IsSMTP(); $mailer->SMTPAuth = true; /// SMTPサーバー $mailer->Host = 'smtp.mail.yahoo.co.jp'; /// 送信元のユーザー名 $mailer->Username = 'hoge'; /// 送信元のパスワード $mailer->Password = 'hogehoge'; /// ポート番号 $mailer->Port = 465; /// 送信元メルアド $mailer->From = 'hoge@yahoo.co.jp'; /// 送信者名 $mailer->FromName = 'テスト送信'; /// 送信先と件名・本文を設定してテスト送信 /// 送信先アドレス $mailer->addAddress( 'hoge@gmail.com' ); /// メール件名 $mailer->Subject = 'テスト送信'; /// メール本文 $mailer->Body = 'こんにちは、テスト送信です。'; /// メール送信 $result = $mailer->send(); if ( $result ) { print_r('送信成功!!'); } else { print_r('送信エラー'); /// エラー内容全出力 var_export($mailer->ErrorInfo); }

PHP

//sendmail.ini ; configuration for fake sendmail ; if this file doesn't exist, sendmail.exe will look for the settings in ; the registry, under HKLM\Software\Sendmail [sendmail] ; you must change mail.mydomain.com to your smtp server, ; or to IIS's "pickup" directory. (generally C:\Inetpub\mailroot\Pickup) ; emails delivered via IIS's pickup directory cause sendmail to ; run quicker, but you won't get error messages back to the calling ; application. smtp_server=mail.mydomain.com ; smtp port (normally 25) smtp_port=25 ; SMTPS (SSL) support ; auto = use SSL for port 465, otherwise try to use TLS ; ssl = alway use SSL ; tls = always use TLS ; none = never try to use SSL smtp_ssl=auto ; the default domain for this server will be read from the registry ; this will be appended to email addresses when one isn't provided ; if you want to override the value in the registry, uncomment and modify ;default_domain=mydomain.com ; log smtp errors to error.log (defaults to same directory as sendmail.exe) ; uncomment to enable logging error_logfile=error.log ; create debug log as debug.log (defaults to same directory as sendmail.exe) ; uncomment to enable debugging ;debug_logfile=debug.log ; if your smtp server requires authentication, modify the following two lines auth_username= auth_password= ; if your smtp server uses pop3 before smtp authentication, modify the ; following three lines. do not enable unless it is required. pop3_server= pop3_username= pop3_password= ; force the sender to always be the following email address ; this will only affect the "MAIL FROM" command, it won't modify ; the "From: " header of the message content force_sender= ; force the sender to always be the following email address ; this will only affect the "RCTP TO" command, it won't modify ; the "To: " header of the message content force_recipient= ; sendmail will use your hostname and your default_domain in the ehlo/helo ; smtp greeting. you can manually set the ehlo/helo name if required hostname=

試したこと

ポート番号は25, 587, 465を試しましたが、すべて同じエラーメッセージが表示されます。
元々はPHPMailerを使わず、"php.ini"と"sendmail.ini"ファイルの設定を触っていたのですが、「Message is missing recipient's address」というエラーログが出てきて断念。PHPMailerを導入してみたところ、上記なようなエラーが表示され、やはりうまくいきません。

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

Windows10 XAMPP環境。ライブラリにPHPMailerを使用。
プログラミング初心者で、2日ほど考えても分からず投稿させていただきました。ご回答いただけると嬉しいです。よろしくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

Michi1090

2021/12/22 04:57

>>m.ts10806さん 一応、そのサイトを確認してポート番号を設定したのですが…。 ちなみに初歩的な質問となって申し訳ないのですが、参照する場所は「送信メール(SMTP)ポート番号 465」間違いないでしょうか? >>te2jiさん ありがとうございます。確認してみます。
FKM

2021/12/22 06:43

使用しているxamppのバージョンは何でしょうか?あとsendmail.iniの設定はどうなっていますか?
Michi1090

2021/12/22 07:47

XAMPPのバージョンはv3.3.0です。質問にsendmail.iniのソースコードを追加させていただきました。 PHPMailerのライブラリを利用する前に、すべてデフォルトの設定に戻しています。
FKM

2021/12/22 07:50

$mailer->IsSMTP(); ここを $mailer->isSMTP();に変えてみたらどうなりますか?

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

PHP

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

メール

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。