通过PHP连接到SMTP服务器失败

时间:2018-04-27 11:28:20

标签: php smtp phpmailer

我有一个网站,我已将其中一个页面编程为连接到SMTP以向客户发送电子邮件。当我将文件上传到主机时会出现此问题,然后它无法连接并向我显示错误SMTP Error: Connection timed out

在localhost上,代码工作正常并在实例中成功连接。是否需要在代码或主机设置中更改以使其正常工作?

使用PHPMailer,这些是我的连接变量(不包括主题,正文等):

$mail->SMTPDebug = 2;                                 // Enable verbose debug output
$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp.gmail.com';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->AuthType = 'LOGIN';
$mail->Username = 'email@gmail.com';                 // SMTP username
$mail->Password = 'mypassword';                           // SMTP password
$mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465;                                    // TCP port to connect to
$mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false ) );

3 个答案:

答案 0 :(得分:0)

$mail->SMTPSecure = 'tls';
$mail->Port = 587; 

答案 1 :(得分:0)

  

当我将文件上传到主机

时,问题就开始了

为什么您认为上传影响邮件服务器连接的文件?

  

$ mail-> SMTPOptions = array('ssl'=> array('verify_peer'=> false));

这不是一个好主意。

  

我是否需要在代码或主机设置中更改以使其正常工作?

如果您在代码,主机设置或主机所在的网络基础设施中更改了某些内容,那么它可能会开始工作(请参阅注释1)但是因为您只告诉我们(部分)代码,我们猜不出那可能是什么。

对于面向互联网的主机来说,它的功能受到限制并不少见 - 这可能会受到路由,防火墙,DNS可用性等因素的限制。权限。这些是您应该检查的事项(或与管理主持人的人交谈)。

注意1:为了以后读者的利益 - 您可能还需要在邮件服务器上更改某些 - 但如果代码在运行时的行为符合预期,则可能不适用不同的主持人)

答案 2 :(得分:0)

您遇到Connection timeout问题。这很可能是因为您的配置出了问题,导致代码无法与google smtp服务器连接。

首先确保您使用的是最新版本的PHPMailer。进一步研究有问题的代码

请按照以下更新调试并解决问题

$mail->SMTPDebug = 2;                                 // Enable verbose debug output
$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp.gmail.com';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication;
$mail->Username = 'email@gmail.com';                 // SMTP username
$mail->Password = 'mypassword';                           // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587;                                    // TCP port to connect to`
<德尔> `$ mail-&gt; AuthType =&#39;登录&#39; $ mail-&gt; SMTPOptions = array(&#39; ssl&#39; =&gt;数组(&#39; verify_peer&#39; =&gt; false));`

如果您尝试使用已编辑的代码块,我相信您应该得到肯定的结果。

为了进一步明确这一点,您可能希望查看他们(PHPMailer&#39; s)的实际文档connect with Google SMTP

希望,这有帮助!