【发布时间】:2016-03-09 03:44:58
【问题描述】:
我用 Ubuntu 和 DigitalOcean 构建了一个 droplet,我正在尝试将其配置为使用 SMTP 发送电子邮件。
我知道 DigitalOcean 通过 IPv6 而不是通过 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() 失败。
我有兴趣使用 SMTP 发送电子邮件,所以需要->isSMTP()!
我哪里错了?
非常感谢。
编辑:
正在做:telnet smtp.gmail.com 587
我明白了:
正在尝试 74.125.133.108...
已连接到 gmail-smtp-msa.l.google.com。
转义字符是'^]'。
220 smtp.gmail.com ESMTP w6sm13897014wjy.31 - gsmtp
然后做:openssl s_client -connect smtp.gmail.com:465 我也得到了答案...
怎么了?
【问题讨论】:
-
您需要定义“不工作”。阅读the troubleshooting guide,用
SMTPDebug = 4发布你得到的信息。 -
对不起,我更新了错误。我忘记写了!我之前一直在故障排除指南中。否则我不会来 StackOverflow :)
-
因此,请发布您从调试输出中获得的信息,就像指南所说的那样 - 关于该确切消息的 SO 上有 800 多个问题。您很可能会遇到指南中准确描述的问题;这些天连接到 gmail 非常混乱。
-
OceanDigital 上默认禁用 SMTP 端口,您必须打开支持工单才能启用 SMTP 端口。
-
尝试“tls”到“ssl”有时服务器需要 ssl。
标签: php email ubuntu phpmailer sendmail