【问题标题】:How to resolve SMTP could not connect error? [post STARTTLS problem]如何解决 SMTP 无法连接错误? [发布 STARTTLS 问题]
【发布时间】:2020-06-25 05:21:47
【问题描述】:

我已经使用 composer composer require phpmailer/phpmailer 安装了 php mailer。我按照本网站https://www.geeksforgeeks.org/how-to-send-an-email-using-phpmailer 的说明进行操作。

以下是我发送电子邮件的代码。

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';


$mail = new PHPMailer(true); 
try 
{ 
    $mail->SMTPDebug = 2;
    $mail->isSMTP(); 
    $mail->Host       = 'mail.example.in'; 
    $mail->SMTPAuth   = true;      
    $mail->Username   = 'username'; 
    $mail->Password   = 'password';       
    $mail->SMTPSecure = 'tls';   
    $mail->Port       = 587;   
    $mail->setFrom('owner@gmail.com', 'Owner'); 
    $mail->addAddress('receipent@gmail.com'); 
    $mail->isHTML(true);                                  
    $mail->Subject = "Hello this is subject";
    $mail->Body    = "Hello this is message;
    $mail->send();

    echo "Mail has been sent successfully!"; 
} 
catch (Exception $e) 
{ 
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}"; 
}

当我评论 $mail->isSMTP(); 并发送邮件时,我得到的结果是消息已发送,但我的 Gmail 收件箱中没有。

当我取消注释 $mail->isSMTP(); 时,我收到如下图所示的错误消息。

我的项目托管在 godaddy 服务器上。 即使我使用 php mail() 函数发送邮件,响应是邮件发送成功,但它没有传递到我的 Gmail 收件箱中

【问题讨论】:

标签: php smtp phpmailer starttls


【解决方案1】:

如果您想使用 Gmail,您应该按照此处的步骤手动将 Google MX 记录添加到您的 GoDaddy 帐户: https://uk.godaddy.com/help/point-my-domains-email-service-to-google-7936

很遗憾,更改需要几天时间才能反映出来。

然后您需要禁用安全功能,更改您的 php 邮件配置,如:

$mail->Host = 'localhost';
$mail->SMTPAuth = false;
$mail->SMTPAutoTLS = false; 
$mail->Port = 25; 

希望这能解决。

-----编辑------

后来我发现当端口为 25 时,电子邮件会进入垃圾邮件文件夹。我将连接更改为 TLS,现在我可以正常接收它们了。

这是我网站上的代码,它可以在 Godaddy 上运行,我收到电子邮件到我的 gmail 帐户。

$mail = new PHPMailer();
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'true';
$mail->Port = 587;
$mail->Host = "smtp.gmail.com";
$mail->Username = "********@gmail.com";
$mail->Password = "**********";
$mail->SetFrom("********@gmail.com");
$mail->AddAddress("********@gmail.com");
$mail->Subject = " your subject";
$mail->Body = "your body"; 

【讨论】:

  • 有什么办法可以避免邮件进入收件箱而不是垃圾邮件文件夹
  • 请注意我没有 $mail->isSMTP();在我的代码中。它仅在我出于某种原因删除该行后才起作用。
  • 删除 $mail->isSMTP(); 后它也对我有用;
猜你喜欢
  • 1970-01-01
  • 2019-03-04
  • 1970-01-01
  • 2020-12-26
  • 2016-05-13
  • 2019-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多