PHPMailer无法使用ec2发送发送电子邮件

时间:2017-02-28 20:09:03

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

我正在使用 PHPmailer 发送帐户验证邮件,我使用的是 AWS ec2 实例,但是,该邮件程序正常运行 localhost ,但当我将其上传到服务器时,电子邮件不会发送, 首先,我使用 SendGrid 凭据发送电子邮件,失败,然后尝试 Gmail SMTP ,失败,在某处我读到ec2无法发送电子邮件,然后我创建了 SES ,仍然无法发送。

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

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

我的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的安全组中为入站和出站打开了SMTP端口,一切正常,但 PHPMailer

1 个答案:

答案 0 :(得分:1)

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

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