0

嗨,我过去曾使用 sendgrid 发送电子邮件,目前正在将其用作应用程序的重置密码。我也想将它用于另一个应用程序。我的 AWS 有第二个应用程序的新实例。我已经从我的第一个实例和 php.ini 复制了 sendmail.ini,并且我使用基本相同的代码在我的 php 文件中发送电子邮件。第一个有效,第二个无效。下面的代码:

$subject = "Don't be stuck for a password!" ;
$Emessage = wordwrap("<html><body>Please click the link below to reset your password. <br><br> <a href=http://xxx.xxx.xx/resetPassword.php?AuthCode=".$Token."&email=".$email."&userid=".$userid." />Reset Password</a><br><br> Thanks, <br></body></html>", 70, "\r\n");
$from= "xxx@xxx.com";
$from_name="xxx Ltd.";
$headers = "Date: ". date("r") ."\r\n". "From: $from_name <$from>\r\n";

$headers  .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";


//echo $message;
$mailSent= mail($email, $subject, $Emessage, $headers);
if (!$mailSent){
    //$reset= error_get_last();
    $reset='Not OK';
}

请注意,mailSent 正在返回 true。应该是配置问题。此外,我在两个实例上运行相同版本的 xampp。

我的 sendmail.ini 如下:

[sendmail]

smtp_server=smtp.sendgrid.net
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
auth_username=xxx
auth_password=yyy
force_sender=xxx@xxx.com

我的 php.ini 在 [mail 函数] 中有以下内容:

sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" - t"
4

2 回答 2

0

原来我犯了不重新启动 Apache 的菜鸟错误!这就是错误的全部!

于 2014-06-01T12:31:23.417 回答
0

由于相同的代码在一个实例而不是另一个实例上工作,如果我们假设实例完全相同,它必须在您的实例外部。AWS 有一个初始的出站电子邮件限制,因此您可能会达到该限制,但它已在您的其他实例上取消。

解决这个问题的一种方法是通过 SendGrid 的Web API发送(它不限于 AWS [因为它通过端口 80 发送])。

您将无法使用该mail功能进行发送,但是,我们有一个PHP 库来发送电子邮件,这很容易做到。

于 2014-04-29T09:50:36.003 回答