4

私はphpmailerを使ってメールを送信していますが、メールの送信頻度が高いので結果を出したいです。だから私はphpmailer "timeout"を使いたいのですが、うまくいきません。私のコード

        $mail             = new PHPMailer();
    $mail->IsSMTP();
    $mail->Timeout  =   10;
    $mail->SMTPAuth   = true;
    $mail->SMTPKeepAlive = true;
    $mail->SMTPSecure = "ssl";
    $mail->Host       = "smtp.gmail.com";
    $mail->Port       = 465;
    $mail->Username   = "qinqin1920@gmail.com";
    $mail->Password   = "xxxx";
    $mail->From       = "qinqin1920@gmail.com";
    $mail->Subject    = "This is the subject";
    $mail->AltBody    = "test";
    //$mail->WordWrap   = 50; // set word wrap
    $mail->MsgHTML("test233");
    //$mail->AddReplyTo("qinqin1920@gmail.com");
    $mail->AddAddress("xxxx@qq.com");

    $mail->IsHTML(true);

    echo "<br/>".time()."<br/>";
    echo "time out is ".$mail->Timeout."<br/>";
    if(!$mail->Send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
        echo "Message has been";
    }
    echo "<br/>".time()."<br/>";

そしてエコーは:1383181520タイムアウトは10ですメッセージは1383181534でした

手伝って頂けますか

4

1 に答える 1

9

ドキュメントには、「var $Timeout = 10 SMTP サーバーのタイムアウトを秒単位で設定する」および「この関数は win32 バージョンでは機能しない」と記載されています。

より長いタイムアウト値が必要な場合は、1 分 (60 秒) 程度に設定してください。同じ SMTP サーバーを介して複数のメールを送信している場合は、接続を開いたままにしておくと便利な場合がありますが、最後に接続を閉じることを忘れないでください。

タイムアウトを延長する場合は、スクリプトの時間制限を増やすか、すべて削除してください。

<?php
    set_time_limit(0); // remove a time limit if not in safe mode
    // OR
    set_time_limit(120); // set the time limit to 120 seconds

    $mail                = new PHPMailer();
    $mail->IsSMTP();
    $mail->Timeout       =   60; // set the timeout (seconds)
    $mail->SMTPKeepAlive = true; // don't close the connection between messages
    // ...
    // Send email(s)
    $mail->SmtpClose(); // close the connection since it was left open.
?>
于 2014-02-11T16:37:15.067 に答える