在php中发送电子邮件在一个实例上而不是另一个实例上

时间:2014-04-29 09:11:23

标签: php email config sendgrid sendmail.exe

您好我以前使用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 function]中有以下内容:

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

2 个答案:

答案 0 :(得分:0)

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

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

您将无法使用mail功能发送,但是,我们有一个PHP Library to send email可以让您轻松完成。

答案 1 :(得分:0)

原来我犯了一个不重启我的Apache的新手错误!那就错了!