PHPMailer,SMTP错误无法连接到smtp主机


PHPMailer,SMTP Error Could not connect to smtp host

我的网站上有一个简单的会员管理。它基于 php 会话。用户可以登录、更改密码、请求新密码、注销的位置。当我在PC上执行时,所有这些功能都运行良好。请求新密码工作正常,邮件发送成功,新密码通过邮件接收。

如果我尝试在手机(iPhone(中请求新密码(通过本地IP打开网站(,我收到以下错误SMTP错误无法连接到smtp主机邮件未发送,请重试!但是,当我在我的 PC 中执行相同的操作时,邮件已成功发送。当我在三星手机(S4(中尝试时,它有时会起作用,有时会出错。

mymail 函数从其他 PHP 文件中的调用接收收件人地址、主题、消息和发件人地址。消息包含用户名和新密码,它是 html 代码。

我会用代码清楚地解释你..

这是send_mail.php。"mymail"函数是从另一个PHP文件调用的。

<?php
//include phpmailer
require_once ('class.phpmailer.php');
function mymail($mto, $msub, $mbody, $mfrom) {
$mail = new PHPMailer();
$mail -> IsSMTP();
$mail -> SMTPAuth = true;
$mail -> SMTPSecure = "tls";
$mail -> Host = "email-smtp.us-west-2.amazonaws.com";
$mail -> Username = "Provided by Amazon SES";
$mail -> Password = "Provided by Amazon SES";
$mail -> SetFrom("$mfrom", '');
//from (verified email address)
$mail -> Subject = "$msub";
$body = "$mbody";
$body = eregi_replace("[']", '', $body);
$mail -> MsgHTML($body);
$mail -> AddAddress("$mto", "");
if ($mail -> Send()) {
    return 1;
} else {
    echo "<br> Mail not sent, try again!";
    return 0;
}
}
?>

而且,是的,我正在从 Amazon SES 中经过验证的电子邮件发送邮件。我尝试编辑 php 代码。从其他 php 文件中删除了 sha1 函数,没有使用。我认为问题出在这个功能上。通常 php 是服务器端的,但是,从移动设备或 PC 访问时,php 处理器的工作方式会有所不同吗?我从昨天晚上开始一直在尝试。在谷歌上做了足够的研究。提前谢谢。

尝试添加端口号:

$ mail-> Port = 587; // amazon ses port number

除此之外,您还可以使用:

$mail->SMTPDebug = 1;

获取调试信息。

这也可能是由于PHP中缺乏SSL支持。可以使用以下命令启用:

extension=php_openssl.dll

尝试更新 PHPMailer。这应该可以解决问题

我只是在处理相同的sendmail php函数。您必须注意的一些事项:

  1. 某些服务器(如 GMAIL(要求您先设置一些设置,然后才能允许不受信任的应用程序(在本例中为脚本(登录您的帐户。您正在使用亚马逊,但我相信它们适用于类似的安全设置。

  2. 确保您具有正确的主机和端口号。

  3. 确保您的表单始终传递正确的信息。如果一个字段未正确传递,则不会发送电子邮件。

  4. 移动设备,PC或三星应该以相同的方式工作,因为它们可以访问相同的文件,并且浏览器对sendmail的支持可能相同。

我已经解决了,这很简单。

此处的电子邮件区分大小写!尝试将起始字母从大写字母更改为小字母。它的固定。感谢所有试图回答这个问题的人!