问题
When I am sending via Gmail using phpmailer, the email is taking a long time to send and also sometimes it is not going. I am using XAMPP as localhost.
Here is my Code:
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:
I had that too:It is because PPHmailer works with uniqid()
to create its boundary strings, which, on certain hosts, is very slow. By adding the 2. parameter more_entropy
to true, I solved that problem.
In the file class.phpmailer.php
around line 1379
:
public function CreateHeader() {
$result = '';
// Set the boundaries
$uniq_id = md5(uniqid(time(), true)); // adding 2. param more_entropy (true)
// ....
From the docs
uniqid:
more_entropy
If set to TRUE, uniqid() will add additional entropy (using the combined linear congruential generator) at the end of the return value, which increases the likelihood that the result will be unique.
来源:https://stackoverflow.com/questions/8815088/email-through-phpmailer-is-slow