下面是我的函数:
function send_mail($email_from, $password, $email_to, $subject, $body, $name_from = "Lamtakam"){
$phpMailer = new PHPMailer(true);
// $phpMailer->SMTPDebug = true;
$phpMailer->isSMTP();
$phpMailer->Host = "smtp.zoho.com";
$phpMailer->SMTPAuth = true;
$phpMailer->Username = $email_from;
$phpMailer->Password = $password;
$phpMailer->SMTPSecure = "tls";
$phpMailer->Port = 587;
$phpMailer->isHTML(true);
$phpMailer->CharSet = "UTF-8";
$phpMailer->setFrom($email_from, $name_from);
$phpMailer->addAddress($email_to);
$phpMailer->Subject = $subject;
$phpMailer->Body = $body;
return $phpMailer->send();
}
当我在本地使用它(xampp)时,它工作得很好。但最近我在服务器上上传了我的网站(linux ubuntu),不幸的是电子邮件不能发送。实际上$phpMailer->send()
返回true,但我既没有在收件箱中收到电子邮件,也没有收到垃圾邮件。为什么以及如何修复它?
好的,大约30分钟后,我在收件箱里收到了这封邮件。现在我的问题是,这个巨大的延迟的原因是什么?
发布于 2018-07-12 04:14:48
我相信this post是非常相关的。简而言之,导致延迟的不是PHP,而是SMTP,PHP脚本将邮件传递到SMTP。SMTP有一些奇怪的行为可能导致这种情况,最常见的是greylisting。Greylisting试图通过在处理之前多次等待请求来减少垃圾邮件和防止未经验证的电子邮件。
如果你想更快地发送邮件,我推荐使用像Sendgrid这样的应用程序接口,它有自己的SMTP服务器。API往往更可靠、更快速、更易于使用。一般来说,PHP的mail()
函数很慢,这是没有办法的。
发布于 2018-07-12 04:11:57
尝试以下代码,尝试捕获任何phpmailer异常。
function send_mail($email_from, $password, $email_to, $subject, $body, $name_from = "Lamtakam"){
$phpMailer = new PHPMailer(true);
try {
$phpMailer->SMTPDebug = 2;
$phpMailer->isSMTP();
$phpMailer->Host = "smtp.zoho.com";
$phpMailer->SMTPAuth = true;
$phpMailer->Username = $email_from;
$phpMailer->Password = $password;
$phpMailer->SMTPSecure = "tls";
$phpMailer->Port = 587;
$phpMailer->isHTML(true);
$phpMailer->CharSet = "UTF-8";
$phpMailer->setFrom($email_from, $name_from);
$phpMailer->addAddress($email_to);
$phpMailer->Subject = $subject;
$phpMailer->Body = $body;
$phpMailer->send();
} catch (phpmailerException $e) {
die($e->errorMessage());
}
}
如果不起作用,请检查主机是否打开了587端口
https://stackoverflow.com/questions/51293433
复制相似问题