Электронная почта через PHPMailer работает медленно - PullRequest
3 голосов
/ 11 января 2012

Когда я отправляю через Gmail через phpmailer, отправка электронной почты занимает много времени, а иногда и не идет. Я использую XAMPP в качестве локального хоста.

Вот мой код:

if($_POST['submit']{
/*MAIL PART BEGINS*/

        //error_reporting(E_ALL);
        error_reporting(E_STRICT);

        date_default_timezone_set('America/Toronto');

        require_once('class.phpmailer.php');
        //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

        $mail             = new PHPMailer();

        $body             = "Your Password has been generated.<p />";
        $body             .="New Password = '$password'<p />";
        $body             .="Please Login with your Employee ID and this password and you can change the password at any time.";
        //$body           .="Amount Requested = '$amount'<p />";
        //$body           .="Amount Sanctioned = '$amount_sanctioned'<p />";
        $body             = eregi_replace("[\]",'',$body);

        $mail->IsSMTP(); // telling the class to use SMTP
        $mail->Host       = "stmp.gmail.com"; // SMTP server
        $mail->SMTPDebug  = 1;                     // enables SMTP debug information (for testing)
                                       // 1 = errors and messages
                                       // 2 = messages only
        $mail->SMTPAuth   = true;                  // enable SMTP authentication
        $mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
        $mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
        $mail->Port       = 465;                   // set the SMTP port for the GMAIL server
        $mail->Username   = "my_username@gmail.com";  // GMAIL username
        $mail->Password   = "******";            // GMAIL password

        $mail->SetFrom('my_username@gmail.com', 'First Last');

        $mail->AddReplyTo("my_username@gmail.com","First Last");

        $mail->Subject    = "Change Password";

        //$mail->AltBody    = "Hello...!!!"; // optional, comment out and test

        $mail->MsgHTML($body);

        $address = "$email"; 
        //$address1 = "my_username@gmail@hotmail.com";
        //$address2 = "my_username@gmail@rediffmail.com";
        //$address3 = "my_username@gmail@iicb.res.in";
        $mail->AddAddress($address, "First Last");
        //$mail->AddAddress($address1, "First Last");
        //$mail->AddAddress($address2, "First Last");
        //$mail->AddAddress($address3, "First Last");



        //$mail->AddAttachment("images/phpmailer.gif");      // attachment
        //$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment

        if(!$mail->Send()) {
            echo "Mailer Error: " . $mail->ErrorInfo;
        } else {
            echo "Message sent!";
        }
        //MAIL PART ENDS*/
}

1 Ответ

0 голосов
/ 09 мая 2014

У меня тоже это было: причина в том, что PPHmailer работает с uniqid() для создания граничных строк, что на некоторых хостах очень медленно Добавив 2. параметр more_entropy в true, я решил эту проблему.

В файле class.phpmailer.php около line 1379:

public function CreateHeader() {
    $result = '';

    // Set the boundaries
    $uniq_id = md5(uniqid(time(), true)); // adding 2. param more_entropy (true)
    // ....

Из документов

uniqid:

more_entropy

Если установлено значение TRUE, uniqid () добавит дополнительную энтропию (с использованием комбинированного линейного конгруэнтного генератора) в конце возвращаемое значение, что увеличивает вероятность того, что результат будет уникальный.

...