的PHPMailer不能发送与EC2发送电子邮件

问题描述:

我使用PHPMailer的发送帐户验证邮件,我使用AWS EC2实例然而,邮件是在本地主机工作罚款,但是当我上传这对服务器电子邮件是不是第一次去, ,我用SendGrid凭证发送电子邮件,失败,再尝试Gmail的SMTP,失败的地方,我读了EC2不能发送电子邮件,然后,我创建SES也,还不能发送。的PHPMailer不能发送与EC2发送电子邮件

在网上搜索,ABT上,但没有答案在本地主机固定我的问题,

,在可以发送电子邮件使用相同的代码,并与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("[email protected]", "SMTP_REPLAY_NAME"); 
$mail->addReplyTo("[email protected]", "SMTP_REPLAY_NAME"); 
$mail->addAddress("[email protected]"); // 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证书!打开SMTP端口的入站和出站安全组 ec2,一切工作正常,但PHPMailer

+1

AWS当前遇到服务中断:https://status.aws.amazon.com/ –

+0

现在亚洲地区服务器已启动,并且我正在使用SendGrid作为SMPT(现在),而不是S3 –

+0

谢谢我做过调试和找到答案[这里](https://gistpages.com/posts/phpmailer_smtp_error_failed_to_connect_to_server_permission_denied_13_fix) –

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

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

+0

我试着用SSL和TLS端口465和587.正如我说的邮件发送和我收到这些邮件时,在本地主机 –

+0

使用m再次改变这些设置,但消息显示成功,但邮件我不能接受! –

+1

那么调试输出说什么?将其添加到您的问题。 – Synchro