下午好,
我已经在Phpmailer工作了几天,无法解决这些SMTP Connect失败的错误。我已经禁用了我的防火墙并进行了双重和三重检查,我的用户名和密码都是正确的。我无法访问我的php.ini文件,因为我的服务器是基于云的(Rackspace)。我联系了rackspace,他们告诉我访问我的.htaccess文件。但是,我无法找到有关添加到.htaccess文件的内容的任何信息,以使phpmailer没有SMTP连接失败错误。代码和错误报告如下。任何和所有信息表示赞赏。
P.S。我也看过我的php_errors.log文件,那里没有任何phpmailer错误!
include("../phpmailer/class.phpmailer.php");
include("../phpmailer/PHPMailerAutoload.php");
include("../phpmailer/class.smtp.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->CharSet = 'utf-8';
$mail->ContentType = 'text/html';
$mail->SMTPDebug = 2;
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Host = "secure.emailsrvr.com";
$mail->Port = 465;
$mail->Username = "xxx@website.com";
$mail->Password = "password";
$mail->From = "xxx@website.com";
$mail->FromName = "xxx";
$mail->AddAddress('xxx@website.com', 'First Name');
$mail->IsHTML(true); // send as HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <strong>in bold!</strong>';
$mail->AltBody = 'This is a plain-text message body';
$mail->WordWrap = 80; // set word wrap
$mail->msgHTML(file_get_contents('..contents.htm'), dirname(__FILE__));
//Attach an image file
$mail->addAttachment('');
// HTML body
$body = "Hello";
if(!$mail->Send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}else{
echo "Message sent!";
}
ERROR1:
2014-12-08 17:35:42 Could not access file:
2014-12-08 17:36:03 SMTP ERROR: Failed to connect to server: Connection timed out (110)
2014-12-08 17:36:03 SMTP connect() failed. Mailer Error: SMTP connect() failed.
误差2:
2014-12-08 17:38:09 Could not access file:
2014-12-08 17:38:10 SERVER -> CLIENT: 220 smtp17.relay.dfw1a.emailsrvr.com ESMTP - VA Code Section 18.2-152.3:1 forbids use of this system for unsolicited bulk electronic mail (Spam)
2014-12-08 17:38:10 CLIENT -> SERVER: EHLO everyhome.com
2014-12-08 17:38:10 SERVER -> CLIENT: 250-smtp17.relay.dfw1a.emailsrvr.com 250-SIZE 75000000 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250 ENHANCEDSTATUSCODES
2014-12-08 17:38:10 CLIENT -> SERVER: AUTH LOGIN
2014-12-08 17:38:10 SERVER -> CLIENT: 334 VXNlcm5hbWU6
2014-12-08 17:38:10 CLIENT -> SERVER: cGF1bC5oZWNrQGV2ZXJ5aG9tZS5jb20=
2014-12-08 17:38:10 SERVER -> CLIENT: 334 UGFzc3dvcmQ6
2014-12-08 17:38:10 CLIENT -> SERVER: S2ltYmVybHkxMTU=
2014-12-08 17:38:11 SERVER -> CLIENT: 535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6
2014-12-08 17:38:11 SMTP ERROR: Password command failed: 535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6
2014-12-08 17:38:11 CLIENT -> SERVER: QUIT
2014-12-08 17:38:11 SERVER -> CLIENT: 221 2.0.0 Bye
2014-12-08 17:38:11 SMTP connect() failed. Mailer Error: SMTP connect() failed.
答案 0 :(得分:0)
错别字:
$mail->msgHTML(file_get_contents('..contents.htm'), dirname(__FILE__));
^--- missing /?
除非你真的有一个&#34;双重隐藏&#34;文件名为&#34; .. contents.htm&#34;。
至于smtp错误 - 它超时了。某些secure.emailsrvr.com:465
是从您的php服务器防火墙/无法访问的。由于这不是编程问题,我们无法真正帮助您 - 您必须弄清楚数据包在哪里/如何被丢入bitbucket。
答案 1 :(得分:0)
我的php.ini文件,因为我的服务器是基于云的(Rackspace)。我联系了rackspace,他们告诉我访问我的.htaccess文件。
你的php.ini文件中的所有内容都是sendmail配置,你不必对.htaccess做任何事情,只有当你要在那里添加东西时才能这样做就像你在php.ini文件上一样。
你需要看看maillog。问题
tailf / var / log / maillog
如果你在命令行上获得更好的调试信息。
如果您启用了其他错误日志
,这会更好require_once '../class.phpmailer.php';
$mail = new PHPMailer(true); //defaults to using php "mail()"; the true param means it will throw exceptions on errors, which we need to catch
try {
$mail->AddReplyTo('name@yourdomain.com', 'First Last');
//additional mail related code
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
答案 2 :(得分:0)
这看起来像一个简单的身份验证失败,所以请仔细检查您的用户名和密码。我建议从PHPMailer提供的一个示例开始 - 看起来它基于一些非常古老的东西,所以还要确保你有来自github的最新PHPMailer。
将代码缩减到绝对最小值以删除错误来源 - 例如直接设置Body
,不要调用msgHTML
,不要加载外部内容,不要添加附件 - 只删除一些不是绝对必要的东西。
尝试使用端口587上的“tls”进行连接,您也可以使用AuthType = 'PLAIN'
。同时确认EHLO响应与您要求连接的服务器匹配,以防您被ISP透明地重定向。
PHPMailer docs中还介绍了检查DNS和网络问题。