在我的机器上发送邮件成功,但使用 phpmailer 使服务器失败

Posted

技术标签:

【中文标题】在我的机器上发送邮件成功,但使用 phpmailer 使服务器失败【英文标题】:sent mail succed on my machine but failed the server using phpmailer 【发布时间】:2013-06-13 04:45:36 【问题描述】:
<?php
date_default_timezone_set('America/Toronto');

require_once('class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

$mail             = new PHPMailer();

$body             = "gdssdh";
//$body             = eregi_replace("[\]",'',$body);

$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host       = "ssl://smtp.gmail.com"; // SMTP server
$mail->SMTPDebug  = 1;                     // enables SMTP debug information (for testing)
                                           // 1 = errors and messages
                                           // 2 = messages only
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
$mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
$mail->Port       = 465;                   // set the SMTP port for the GMAIL server
$mail->Username   = "myemail@gmail.com";  // GMAIL username
$mail->Password   = "******";            // GMAIL password

$mail->SetFrom('mysent@gmail.com', 'PRSPS');

//$mail->AddReplyTo("user2@gmail.com', 'First Last");

$mail->Subject    = "PRSPS password";

//$mail->AltBody    = "To view the message, please use an html compatible email viewer!"; // optional, comment out and test

$mail->MsgHTML($body);

$address = "mymail@yahoo.co.in";
$mail->AddAddress($address, "user2");

//$mail->AddAttachment("images/phpmailer.gif");      // attachment
//$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment

if(!$mail->Send()) 
  echo "Mailer Error: " . $mail->ErrorInfo;
 else 
  echo "Message sent!";

当我在本地机器上运行脚本时,我得到了

CLIENT -> SMTP:EHLO localhost CLIENT -> SMTP:AUTH LOGIN CLIENT -> SMTP:cHV0aGVhLmh1b25nMjAxNEBnbWFpbC5jb20=客户端-> SMTP: UHV0aGVhMDEy 客户 -> SMTP:邮件来自:客户 -> SMTP:RCPT 至: 客户端 -> SMTP:数据客户端 -> SMTP:日期:2013 年 6 月 17 日星期一 04:25:49 -0400 CLIENT -> SMTP: Return-Path: CLIENT -> SMTP: To: user2 CLIENT -> SMTP: From: PRSPS CLIENT -> SMTP: Subject: PRSPS password CLIENT -> SMTP:消息 ID: 客户端 -> SMTP:X 优先级:3 客户端 -> SMTP:X-Mailer:PHPMailer 5.2.6 (https://github.com/PHPMailer/PHPMailer/) 客户端 -> SMTP: MIME 版本:1.0 CLIENT -> SMTP:内容类型:multipart/alternative; 客户端-> SMTP:边界 =“b1_405be3508111cd4789653ec34cdfba23”客户端 -> SMTP:内容传输编码:8 位客户端 -> SMTP:客户端 -> SMTP:--b1_405be3508111cd4789653ec34cdfba23 客户端 -> SMTP: 内容类型:文本/纯文本;字符集=iso-8859-1 客户端-> SMTP: 内容传输编码:8 位客户端 -> SMTP:客户端 -> SMTP:gdssdh 客户端-> SMTP:客户端-> SMTP:客户端-> SMTP: --b1_405be3508111cd4789653ec34cdfba23 客户端-> SMTP:内容类型:文本/html;字符集=iso-8859-1 客户端-> SMTP: 内容传输编码:8 位客户端 -> SMTP:客户端 -> SMTP:gdssdh 客户端-> SMTP:客户端-> SMTP:客户端-> SMTP:客户端-> SMTP: --b1_405be3508111cd4789653ec34cdfba23--客户端-> SMTP:客户端-> SMTP:。 CLIENT -> SMTP: 退出消息发送!

但是当我在主机上运行相同的脚本时

SMTP -> 错误:无法连接到服务器:连接尝试 失败,因为连接方没有正确响应后 一段时间,或建立连接失败,因为已连接 主机未能响应。 (10060)SMTP Connect() 失败。梅勒 错误:SMTP Connect() 失败。

你有什么办法解决这个问题吗?

提前致谢。

【问题讨论】:

您是否有防火墙阻止访问端口 465?你能在 smtp.google.com 上 telnet 到 465 吗? 如何在主机上查看? 如果您对主机有服务器访问权限(SSL 访问),您可以使用终端或 Putty 访问服务器,然后从该服务器测试 telnet 连接。一些主机还在帐户的管理页面中进行了防火墙设置。 你有一些测试 telnet 连接的技巧吗?什么可以或不可以?谢谢 我想答案取决于您是否拥有对主机帐户的 SSL 终端访问权限。如果有,您应该能够运行命令“telnet smtp.google.com 465”而不会出错。 【参考方案1】:

您的主机可能对使用的端口设置了防火墙。尝试使用其他端口(具有其他安全性)设置或联系您的主机。

【讨论】:

真的可以用其他非标准端口访问smtp.gmail.com吗? 引用任何 Google 搜索结果 cavewall.jaguardesignstudio.com/2011/10/12/… :这是个问题,因为 Google Apps 电子邮件帐户在端口 465(用于 SSL)或 587 上使用 smtp.gmail.com b>(对于 TLS)。无法通过此 SMTP 服务器进行未加密发送。 还有另一个引用,用于非安全连接:google.com/support/a/bin/answer.py?hl=en&answer=176600 答案是将 smtp.gmail.com 设置替换为:服务器:aspmx.l.google .com 端口:25

以上是关于在我的机器上发送邮件成功,但使用 phpmailer 使服务器失败的主要内容,如果未能解决你的问题,请参考以下文章

OSX / postfix:无法使用PHP mail()发送邮件[关闭]

phpmail的使用

向 yahoo 和 hotmail 用户发送电子邮件?

使用cloudflare时的php邮件和SMTP

我想发送邮件到我的Gmail,但失败了[重复]

如何使用php邮件附加图像文件