我使用带有DigitalOcean的Ubuntu构建了一个Droplet,我正在尝试将其配置为使用SMTP发送电子邮件。
我知道DigitalOcean通过IPv6阻止SMTP而不是IPv4,因此我将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
我也得到了答案......
怎么了?
答案 0 :(得分:1)
谨防使用其他设备上的Gmail。谷歌不允许并立即阻止从不使用帐户的地方(在google of course眼中)。
答案 1 :(得分:0)
在使用SMTP发送邮件的实时服务器上,执行此操作。
while( $text =~ /
(?m) # multiline match
^ # at the start of the line
([ ]{2}|\t)+ # two spaces or tab - at least once
\+ # the '+' character
\s* # followed by any number of spaces (e.g. "+VAR" or "+ VAR" are valid)
(VAR|CONST) # the VAR or CONST
\s+ # followed at least one space (e.g. the "VAR_" should not matched)
(\w+) # the keyword
\s*=\s* # the '=' surrounded (and consumed) by any number of spaces
( # capture the whole value (as it is)
.* # any string up to end of line
(?: # followed by (non-capturing group)
\R # one line-break
^ # at the start of the line
(?>[ ]{2,}|\t+) # atomic group - at least two spaces or at least one tab
[^+] # followed by any character but '+'
.* # any string up the end of line
)* # any number of times (e.g. optionally)
)
/xg) {
push @match, { indent => $1, type => $2, key => $3, val => $4 };
}
和评论$ mail-&gt; IsSMTP();
它为我工作......
答案 2 :(得分:-1)
尝试评论第8行。
// $mail->isSMTP();