PHPMailer 在发送电子邮件时使用 Gmail SMTP 速度很慢

标签 php windows phpmailer

我发现很少有旧线程有类似的问题,但大多数都没有答案,或者即使有,这些建议也与我的情况无关。

我曾使用 PHP 邮件功能进行过完整的设置,并且效果很好。我不得不一次格式化我的硬盘并从头开始设置服务器。之后,PHP 邮件功能变慢了。在研究解决方案时,我发现大多数人推荐 PHPMailer。我切换到那个,但问题仍然存在。

大多数时候,我每页至少发送两封电子邮件,内容不同但使用相同的对象。大约有 3-4 秒的延迟。请在下面找到相关代码($email1 和 $email2 是包含有效电子邮件地址的数组):

function sendEmail ($email1, $subject1, $message1, $email2, $subject2, $message2) 
{
    require_once('../PHPMailer/class.phpmailer.php');

    $mail = new PHPMailer();
    $mail->IsSMTP(); 
    $mail->SMTPDebug = 0; 
    $mail->SMTPAuth = true; 
    $mail->SMTPSecure = 'ssl';
    $mail->Host = "smtp.gmail.com";
    $mail->Port = 465; 
    $mail->IsHTML(true);
    $mail->Username = $gmail_username;
    $mail->Password = $gmail_password;
    $mail->SetFrom($gmail_address,$email_title);

    $mail->Subject = $subject1;
    $mail->Body = $message1;
    foreach($email1 as $k => $v) {  $mail->AddAddress($v);  }       
    if(!$mail->Send()) {    $emailreturn['cust'] = 0;   } else {    $emailreturn['cust'] = 1;   }
    $mail->ClearAddresses();

    $mail->Subject = $subject2;
    $mail->Body = $message2;
    foreach($email2 as $k => $v) {  $mail->AddAddress($v);  }
    if(!$mail->Send()) {    $emailreturn['partner'] = 0;    } else {    $emailreturn['partner'] = 1;    }
    $mail->ClearAddresses();
}

通过调试和消息我没有看到任何错误,只是发送电子邮件的时间比平时长。

我尝试过的:

  • 我关闭防火墙只是为了测试它,它是一样的。
  • 切换到“tls”,这使它变得更慢
  • 使用对象发送每封电子邮件,每封电子邮件有 3-4 秒的延迟
  • 试过可选配置,注释掉或设置 false,结果都一样

邮件程序设置中是否还缺少其他任何内容,或者是否有一些我应该检查的幕后配置? 谢谢

最佳答案

缓慢(或因超时而失败)是因为 Google 支持 IPv6 寻址但您的网络不支持。 (例如,Digital Ocean 尚不支持 IPv6 用于 SMTP 流量)。所以,使用这个:

$mail->Host = gethostbyname("smtp.gmail.com");

gethostbyname()将返回 IPv4 地址。

对我来说,我的 PHPMailer 脚本执行时间从大约 2 分钟缩短到 <4 秒

关于PHPMailer 在发送电子邮件时使用 Gmail SMTP 速度很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20068484/

相关文章:

html - 在邮件正文中插入图片

php - 连接到关联数组而不是分隔记录

php - 使用 php 的 SoapClient 时类映射选项不起作用

php - 如何使用jquery更改外部数据表中的页码数据表?

php - 将月份名称更改为法语

windows - 如何从 cmd.exe (Windows XP) 运行程序?

php - 无法通过 PHPMailer 使用 Gmail SMTP 服务器发送电子邮件,出现错误 : SMTP AUTH is required for message submission on port 587. 如何解决?

python - 如何使用 Python 成功地将从 MySQL 表中选择的行列插入到目标 MSSQL 表中?

php - fatal error : Class 'Mustache_Engine' not found

php - 无法执行邮件传递程序