我的网站上有一个简单的会员管理。它基于php会话。用户可以登录,更改密码,请求新密码,注销。当我在电脑上演奏时,所有这些功能都很有效。请求新密码正常工作,邮件发送成功,新密码通过邮件收到。
如果我尝试在移动设备(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处理器的工作方式会不同吗?我昨天晚上一直在努力。在谷歌做了足够的研究。提前致谢。
答案 0 :(得分:1)
尝试添加端口号:
$ mail-> Port = 587; // amazon ses port number
除此之外,您还可以使用:
$mail->SMTPDebug = 1;
获取调试信息。
这可能是由于PHP中缺乏SSL支持。可以使用以下方式启用:
extension=php_openssl.dll
答案 1 :(得分:0)
我只是处理相同的sendmail php功能。您需要注意的一些事项:
某些服务器(如GMAIL)要求您在允许不受信任的应用程序(在本例中为您的脚本)登录您的帐户之前设置一些设置。您正在使用亚马逊,但我相信他们的工作类似于安全设置。
确保您拥有正确的主机和端口号。
确保您的表单始终传递正确的信息。如果一个字段未正确传递,则不会发送电子邮件。
移动,电脑或三星应该以相同的方式工作,因为他们可以访问相同的文件,并且对sendmail的浏览器支持可能是相同的。
答案 2 :(得分:0)
我已经解决了,很简单。
此处的电子邮件区分大小写!尝试将首字母从大写改为小写。它是固定的。谢谢所有试图回答这个问题的人!
答案 3 :(得分:0)
尝试更新PHPMailer。这应该解决问题