【问题标题】:PHPMailer not able to send send email with ec2PHPMailer 无法使用 ec2 发送电子邮件
【发布时间】:2017-07-19 23:00:49
【问题描述】:

我正在使用 PHPmailer 发送帐户验证邮件,我正在使用 AWS ec2 实例,但是,该邮件程序在 localhost 中运行良好strong> 但是当我将其上传到 server 时,电子邮件不会发送, 起初,我使用 SendGrid 凭据发送电子邮件,失败,然后尝试 Gmail SMTP,失败,在某处我读到 ec2 无法发送电子邮件,然后我创建了 SES 也是,还是发不出去。

在网上搜索但没有答案可以解决我的问题,

localhost 中,可以使用相同的代码和 Gmail 凭据的 SendGrid 发送电子邮件,为什么我无法使用服务器发送?

我的 PHP 邮件程序代码是:

$sub = "Thankyou For registration! Confirm Your mail to Login";
$mailBody = "<h1>You are successfully registered<br />Visit site to login</h1>";

require 'mailer/PHPMailerAutoload.php';

$mail = new PHPMailer;

$mail->isSMTP();                                   // Set mailer to use SMTP
$mail->Host = "tls://email-smtp.us-east-1.amazonaws.com";                    // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                            // Enable SMTP authentication
$mail->Username = "smtp_username";          // SMTP username
$mail->Password = "smtp_password"; // SMTP password
// $mail->SMTPSecure = 'ssl';                         // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465;                                 // TCP port to connect to

$mail->setFrom("my_mail_id@gmail.com", "SMTP_REPLAY_NAME");
$mail->addReplyTo("my_mail_id@gmail.com", "SMTP_REPLAY_NAME");
$mail->addAddress("recipient_mail_id@gmail.com");   // Add a recipient

$mail->isHTML(true);  // Set email format to HTML
$mail->Subject = $sub;
$mail->Body    = $mailBody;
if(!$mail->send()) {
echo 'Message could not be sent.';
} else {
echo 'Message has been sent';
}

它显示邮件已发送,但我收不到邮件,也检查了垃圾邮件文件夹,没有邮件线索!

即使我也有 openSSL 证书!在 ec2 的 security group 中为入站和出站打开了 SMTP 端口,一切正常,但 PHPMailer

【问题讨论】:

  • AWS 目前服务中断:status.aws.amazon.com
  • 现在亚洲区域服务器已经启动,我正在使用 SendGrid 进行 SMPT(目前),而不是 S3
  • 谢谢我调试并找到答案here

标签: email amazon-ec2 phpmailer sendgrid amazon-ses


【解决方案1】:

让您的协议直截了当。在Host 中,您指定tls,但告诉它连接到Port = 465,这不适用于TLS。将您的Port 更改为587(首选)或将您的加密方法更改为ssl。启用调试输出 (SMTPDebug = 2) 将让您了解与服务器的对话中发生的情况。

细读the troubleshooting guide 可能会有所帮助。

【讨论】:

  • 我尝试使用端口 465 和 587 的 SSL 和 TLS。正如我所说的邮件正在发送,当我在 localhost 中使用时我正在接收这些邮件
  • 再次更改了这些设置,但邮件显示成功但我还无法接收邮件!
  • 那么调试输出说明了什么?将其添加到您的问题中。
  • 阅读指南。它告诉你。
  • 谢谢,我的邮件 httpd 邮件发送已关闭,您的答案我使用调试并找到答案here
猜你喜欢
  • 2015-09-06
  • 2020-11-25
  • 2019-01-19
  • 2023-03-20
  • 2017-10-05
  • 1970-01-01
  • 2015-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多