使用SES和SwiftMailer从ec2发送电子邮件

时间:2014-06-20 21:34:19

标签: php email amazon-ec2 swiftmailer amazon-ses

我在California节点上启动并运行了我的ec2实例除了简单的contact.php格式外,一切正常。

我已经阅读了很多关于ec2很难发送电子邮件的信息。它似乎没有什么工作“

我偶然发现SiftMailer并使用yum install php-swift-Swift.noarch

将其安装在运行Amazon Linux的ec2实例上

我还在Oregon集群上设置了ses凭据(因为他们在加利福尼亚集群上没有邮件)

现在代码非常简单:

<?php
    require '/usr/share/pear/Swift/swift_required.php';
    $transport = new Swift_SmtpTransport(
      'email-smtp.us-west-2.amazonaws.com', 465, 'ssl', 'KEY' ,'SECRET'  );
 // $transport->setUserName('')


  //Create the Mailer using your created Transport
 $mailer = Swift_Mailer::newInstance($transport);

  //Create the message
 $message = Swift_Message::newInstance();
 $message->setSubject("What up?");
 $message->setFrom(array('mygmail@gmail.com'));
 $message->setTo(array('mygmail@gmail.com'));
 $message->setBody("
     <p>
     Dude, I'm <b>totally</b> sending you email via AWS.
     </p>
     ", 'text/html');

$mailer->send( $message );

 ?>

现在我得到的错误是

Fatal error: Uncaught exception 'Swift_TransportException' with message 'Expected response 
code 250 but got code "530", with message "530 Authentication required "' in 
/usr/share/pear/Swift/Swift/Transport/AbstractSmtpTransport.php:386 Stack trace: #0 
/usr/share/pear/Swift/Swift/Transport/AbstractSmtpTransport.php(281): 
Swift_Transport_AbstractSmtpTransport->_assertResponseCode('530 Authenticat...', Array) #1 
/usr/share/pear/Swift/Swift/Transport/EsmtpTransport.php(245): 
Swift_Transport_AbstractSmtpTransport->executeCommand('MAIL FROM: executeCommand('MAIL 
FROM: _doMailFromCommand('mygmail@gmail...') #4 
/usr/share/pear/Swift/Swift/Transport/AbstractSmtpTransport.php(444): 
Swift_Transport_AbstractSmtpTransport->_doMailTransaction(Object(Swift_Message), 

'mygmail @ gmail ...',数组,在     第386行/usr/share/pear/Swift/Swift/Transport/AbstractSmtpTransport.php

所以'mygmail'是我的实际邮件,我只是把它放进我的帖子。而'KEY'和'Secret'是我在IAM中创建SES指令告诉我的凭据时得到的。

我也在SES网络界面上验证了这封电子邮件。

如果我需要更清楚,请告诉我。

2 个答案:

答案 0 :(得分:0)

不确定您是否修复了此问题,但可能是您错误地使用了凭据,因为此处未指定此信息。

我建议尝试更换:
'KEY'与您的电子邮件地址'mygmail@gmail.com'
'SECRET'与您的电子邮件地址'your_gmail_password'

这些设置适用于Yii2和Swiftmailer。

答案 1 :(得分:0)

我认为您需要包括您的AWS SES的SMTP凭证。