10

PHPMailer を使用して SMTP 経由で電子メールを送信しようとしていますが、これまでのところうまくいきません。私は多くの SO の質問、PHPMailer のチュートリアル、フォーラムの投稿を調べましたが、まだ機能しません。時間を節約するために、失敗した試みをできるだけ多く記録しますが、最初に、使用しているコードを次に示します。

<?php
    session_start();
    error_reporting(E_ALL);
    ini_set('display_errors','On');

    require('includes/class.phpmailer.php');
    include('includes/class.smtp.php');
    $mail = new PHPMailer(); 

    $name = $_POST["name"];
    $guests = $_POST["guests"];
    $time = $_POST["time"];

    $message = "<h1>".$name." has booked a table for ".$guests." at ".$time."</h1>";

    $mail->IsSMTP(); // telling the class to use SMTP
    $mail->Host       = "ssl://smtp.gmail.com"; // SMTP server
    $mail->SMTPDebug  = 1;                     // enables SMTP debug information (for testing)
    $mail->SMTPAuth   = true;                  // enable SMTP authentication
    $mail->Port       = 26;                    // set the SMTP port for the GMAIL server
    $mail->Username   = "myEmail@gmail.com"; // SMTP account username
    $mail->Password   = "myPassword";        // SMTP account password
    $mail->SetFrom('myEmail@gmail.com', 'James Cushing');
    $mail->AddReplyTo("myEmail@gmail.com","James Cushing");
    $mail->Subject    = "PHPMailer Test Subject via smtp, basic with authentication";
    $mail->AltBody    = "To view the message, please use an HTML compatible email viewer!";
    $mail->MsgHTML($message)
    $address = "myOtherEmail@me.com";
    $mail->AddAddress($address, "James Cushing");

    if(!$mail->Send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
        echo "Message sent!";
    }
?>

まず、このコードを実行すると、2 つの異なるエラーが発生します。ローカル サーバーで次のエラーが表示されます:
SMTP -> ERROR: Failed to connect to server: Operation timed out (60)
The following From address failed: myEmail@gmail.com : Called Mail() without being connected
Mailer Error: The following From アドレスが失敗しました: myEmail@gmail.com : 接続せずに Mail() を呼び出しました

Web サーバーで同じコードを実行すると、さらに同じエラーが発生しますが、最初の行は次のとおりです:
SMTP -> ERROR: Failed to connect to server: Network is unreachable (101)

明らかに、文字通りの "myEmail@gmail.com" を使用していないことは指摘しておく価値がありますが、この投稿では自分のメール アドレスを代用しています。

私が試したこと
- iCloud SMTPサーバー
を使用する - 別のポートを使用する
- php.iniファイルでOpenSSL拡張機能を有効にする
- さまざまなPHPMailerの例からコードをコピーする
- Googleの「DisplayUnlockCaptcha」システムを使用して接続を有効にする
- 異なるものとの間で送信するアドレス - Username プロパティから "@gmail.com" を削除する - 覚えていない他の多くのこと

これは私を約1日怒らせているので、誰かがそれを解決できれば、彼らはヒーローになります.

ありがとう

4

5 に答える 5

38
$mail->IsSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Username = "myemail@gmail.com";
$mail->Password = "**********";
$mail->Port = "465";

これは動作する構成です。

あなたが持っているものを交換してみてください

于 2013-08-30T14:33:08.413 に答える
3

ポート 465 で SSL を使用しないでください。SSL は 1998 年以降廃止されており、メモを取得していない Microsoft 製品でのみ使用されています。代わりにポート 587 で TLS を使用してください。したがって、以下のコードは非常にうまく機能するはずです。

mail->IsSMTP(); // telling the class to use SMTP
$mail->Host       = "smtp.gmail.com"; // SMTP server

$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->SMTPSecure = "tls";                 // sets the prefix to the servier
$mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
$mail->Port       = 587;                   // set the SMTP port for the 
于 2015-08-14T16:52:24.880 に答える
2

まず、Google に対して次の設定を使用します。

$mail->IsSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls"; //edited from tsl
$mail->Username = "myEmail";
$mail->Password = "myPassword";
$mail->Port = "587";

また、どのファイアウォールを設定しましたか?

TCP ポート 465/995、および場合によっては 587 を除外する場合は、いくつかの例外を構成するか、ルール リストから除外する必要があります。

https://github.com/PHPMailer/PHPMailer/wiki/トラブルシューティング

于 2013-08-30T14:51:29.587 に答える