PHPMailer 在我的服务器上不工作

PHPMailer not working in my server

我用 Ubuntu 和 DigitalOcean 构建了一个 Droplet,我正在尝试将其配置为使用 SMTP 发送电子邮件。

我知道 DigitalOcean 会阻止 IPv6 上的 SMTP,但不会阻止 IPv4 上的 SMTP,所以我将 IPv6 禁用为 this post says

我的脚本仍然无法运行。我试过端口 25、465 和 587。TLS 和 SSL。

我已经为 Ubuntu 14.04 安装了 sendmail,但无法正常工作。

这是我的脚本:

<?php
    require 'mail/PHPMailerAutoload.php';
    
    $mail = new PHPMailer;
    
    $to = $_GET['email'];
    
    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->SMTPAuth = true;
    $mail->Username = 'rafawins@gmail.com';
    $mail->Password = '***';
    $mail->SMTPSecure = 'tls';
    $mail->Port = 587;
    
    $mail->setFrom('rafawins@gmail.com', 'Rafael');
    
    $mail->addAddress($to);
    
    $mail->isHTML(true);
    
    $mail->Subject = 'Subject';
    $contents = ob_get_contents();
    $mail->Body    = "ao!";
    
    if(!$mail->send()) {
        echo 'Message could not be sent.';
        echo 'Mailer Error: ' . $mail->ErrorInfo;
    } else {
        echo 'Message has been sent';
    }
    print_r(error_get_last());
    

?>

出现的错误是:

SMTP connect() failed.

我对使用 SMTP 发送电子邮件 感兴趣,所以需要 ->isSMTP()

我哪里错了?

非常感谢。


编辑:

正在做:telnet smtp.gmail.com 587 我得到:

Trying 74.125.133.108...

Connected to gmail-smtp-msa.l.google.com.

Escape character is '^]'.

220 smtp.gmail.com ESMTP w6sm13897014wjy.31 - gsmtp

并做:openssl s_client -connect smtp.gmail.com:465我也得到了答案...

怎么了?

注意不要在不同设备上使用 Gmail。 google 不允许并立即阻止帐户在不应该使用的地方使用(当然在 google 眼中)。

在实时服务器上使用 SMTP 发送邮件,执行此操作。

$mail->Host = "smtp.gmail.com";      // sets GMAIL as the SMTP server
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;

并评论 $mail->IsSMTP();

它对我有用....

尝试注释掉第 8 行。

// $mail->isSMTP();