40039


<https://qiita.com/tsunet111/items/0ba0e8fc61882c3905c0>  
こちらの記事が比較的シンプルだった為、紹介されているqdmail.phpとqdsmtp.phpというライブラリを利用したいのですが、ページが表示されない状況で、困っています。  
PHPのログをみると、やはり

[code]

    PHP Parse error:  syntax error, unexpected 'new' (T_NEW) in C:\xampp\htdocs\ATOZ\qdmail.php on line 661
    
[/code]

と表示されていました。当方PHP Version 7.0.4です。

＝＝＝＝質問＝＝＝＝  
現在起きている状況は、自分のPHPのVerに対応していないライブラリを選定している、ということでしょうか？それとも読み込みに失敗しているだけなのでしょうか？


CC BY-SA 3.0
2017-12-04T11:33:34.073
40027
2017-12-13T02:39:38.397
2017-12-05T04:25:58.613
25696
25696
question
php mail
SMTP経由のメール送信を達成する為、ネットで紹介されたライブラリを使用したいが利用できない


>
> ①現在起きている状況は、自分のPHPのVerに対応していないライブラリを選定している、ということでしょうか？それとも読み込みに失敗しているだけなのでしょうか？

はい、PHP7に対応していないと思われます。（php5系統なら動くのでは）

> ②SMTPサーバを経由したメールを利用する上では、ライブラリを使うのが一般的のようですが、

無難なPHPのメーラーライブラリならPHPMailerですが、<https://github.com/PHPMailer/PHPMailer>
色々ありますので,自身で試して使い易い長くメンテナンスされているライブラリを選定してください。  
＊すでに作り始めているようなので、`mb_send_mail`等で処理を完成させてからどのライブラリを使用するか検討することをお薦めします。

追記、PHPMailerの送信サンプル（PHPMailer 6.0.2. php7.1.6で送信確認しています。）  
'Exception.php'、'PHPMailer.php'、'SMTP.php'のパスは実行環境に合わせて変更してください。  
smtpサーバなどの設定もテスト環境に合わせて変更してください。  
最後に、メールの誤送信に注意してください。

[code]

    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
    
    require 'Exception.php';
    require 'PHPMailer.php';
    require 'SMTP.php';
    
    $mail = new PHPMailer(true); // Passing `true` enables exceptions
    try {
        $mail->IsSMTP();
        $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
        $mail->SMTPAuth = true;
        //$mail->CharSet = 'utf-8';
        //$mail->SMTPSecure = 'tls';
        $mail->Host = "smtp.hoge.jp";
        $mail->Port = 587;
        $mail->IsHTML(false);
        $mail->Username = 'a@hoge.com';
        $mail->Password = 'hogehoge';
        $mail->SetFrom('a@hoge.com');
        $mail->From     = 'a@hoge.com';
        $mail->Subject = 'test send';
        $mail->Body = 'test send';
        $mail->AddAddress('piyo@hoge.com');
        $mail->send();
    
    } catch (Exception $e) {
    echo $mail->ErrorInfo;
    }
    
[/code]

追記、php `use` 名前空間について簡単な説明  
phpは名前空間が指定されない限り、関数名が重複できません（`Fatal
error`になります）、関数名が重複しないように名前空間を付けます（名前空間を定義するには、`namespace` を使います。）  
`use` はどこの名前空間なのかを指定しています、指定する名前空間はソースを見るか、ドキュメント通りそのまま指定します。（名前空間名\関数名;
ここに指定例あり- <https://github.com/PHPMailer/PHPMailer#installation--loading>）

読み込むライブラリは、置いたパスを指定してください。以下（この送信サンプル）は、phpファイルと同じフォルダーに置いた例です。

[code]

    //指定された名前空間の設定
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
    
    //ライブラリの指定は include include_once require require_once 何でも良いです
    require 'Exception.php';
    require 'PHPMailer.php';
    require 'SMTP.php';
    
[/code]


CC BY-SA 3.0
2017-12-05T02:14:12.690
40039
2017-12-13T02:39:38.397
2017-12-13T02:39:38.397
22793
22793
40027
answer