プロが教えるわが家の防犯対策術!

PHPMailerを使いたくてネット情報などあたっているのですが、

(1) https://taitan916.info/blog/archives/3407 の「ソースコード」 または
(2) https://demi-urge.com/php-smtp/ にある「使い方は以下の通りです」のコード
を貼り付け、test.phpとします。

公式配布元 https://github.com/PHPMailer/PHPMailer からZIPのパックをダウンロードし、
test.phpがあるディレクトリから見て、以下のように配置してあります。
PHPMailer/src/PHPMailer.php
PHPMailer/src/Exception.php
PHPMailer/src/SMTP.php

IISでtest.phpを開くと、
(1) の方は、Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING or '(' in D:\002_WebSites\jcea\tec\test.php on line 3
(2) の方は、Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING or '(' in D:\002_WebSites\jcea\tec\test.php on line 8

どちらも、「use PHPMailer\PHPMailer\PHPMailer;」の記述でつまづくのですが、原因はなんでしょうか?
Composerというのが王道みたいですが、Composerは使わないでPHPMailerを使いたいです。

手元の実験環境は、事情あってPHP5.2.17+IIS(Win10)です。

質問者からの補足コメント

  • No1さんへの補足で、(1) (2) のコードを貼ってみましたが、お礼欄も補足欄も文字数オーバーでお示しができませんでした。

      補足日時:2021/10/21 12:50

A 回答 (4件)

> 【結果】以下のエラーです・・・・なかなかうまくいきませんね。

。。
Message could not be sent.Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Trou

そのエラーメッセージのURLにご丁寧なトラブルシューティングがあるようです…
https://github.com/PHPMailer/PHPMailer/wiki/Trou …

SMTP connect() failed. って言うんですから、とりあえずそのサーバーから smtp.nifty.com に通信ができてるかから確認されてみては如何でしょうか?
    • good
    • 0
この回答へのお礼

度々のご教示ありがとうございます。仰せのトラブルシューティングの
"SMTP Error: Could not connect to SMTP host."のところはみたのですがよくわからず失礼いたしました。

>そのサーバーから smtp.nifty.com に通信ができてるか

別のSMTPサーバーでも同じエラー、さらに別のSMTPサーバーで無事動作が確認できました。適切なSMTPサーバーを検討してみます。
貴重なアドバイスに重ねて感謝申し上げます。

お礼日時:2021/10/22 00:00

書き込んでから気づきましたが、PHP5.2.17をダウンロードしてますか?


https://github.com/PHPMailer/PHPMailer/tree/5.2- …

であれば、↓こう書きなさいって書いてありますね。

<?php
require 'PHPMailerAutoload.php';

$mail = new PHPMailer;

(以下略)
    • good
    • 0
この回答へのお礼

度々大変ありがとうございす。PHPMailer5.2(PHP5.0以降でOK)があるのですね!!

(1) NO3でお示しのURLからZIPをダウンロードし、解凍し「PHPMailer」フォルダに入れ、
これと並列にNO3でお示しのURLにあるサンプルコードを貼りつけた「test.phpと」を置きました。
よって、2行目を以下のように。
require './PHPMailer/PHPMailerAutoload.php'

(2) 暫定的にニフティのSMTP設定を入れました。
https://support.nifty.com/support/manual/mail/se …

$mail->Host = 'smtp.nifty.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'abc12345'; // SMTP username
$mail->Password = 'pw'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to

(3) 添付ファイルはコメントアウトしました。
//$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name

【結果】以下のエラーです・・・・なかなかうまくいきませんね。。。
Message could not be sent.Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Trou …

お礼日時:2021/10/21 21:11

No.1の方のこれが答えじゃないですか?



> あと、PHP5.2ではなくてPHP5.3で試せませんか?
> 名前空間が使えないためのエラーのようですので・・・。

公式配布元githubのFeaturesに下記の記載があります。

> Compatible with PHP 5.5 and later, including PHP 8.1

なので、5.3ですら動くのかどうか…
    • good
    • 0
この回答へのお礼

ご教示ありがとうございます、配布元の記載も確認怠っており失礼いたしました。NO3ご回答で新展開ということで、お礼の続きはNo3に書きますね。

お礼日時:2021/10/21 20:49

実際にD:\002_WebSites\jcea\tec\test.phpにあるtest.phpの中身をコピペして見せてください。


(1)(2)のコードと同じといいつつ同じじゃない可能性もあるので確認したいです。

あと、PHP5.2ではなくてPHP5.3で試せませんか?
名前空間が使えないためのエラーのようですので・・・。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
本当にコピーしただけで、あえて言えば(1) も(2) も末尾に「?>」を加筆しただけです。

なお、仰せのPHPのバージョンは、実は昨夜5.3.29にバージョンアップしようとしたのですが、IISの設定面で、ISAPI→FastCGIに変更がきかず、IISも何かおかしくなってしまったため、散々格闘して諦めて5.2に戻してました。本番環境は、5.3.29なので、できればバージョンアップしたいのですが。。。

お礼日時:2021/10/21 12:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!