如何发送电子邮件Symfony 2 + AWS SES + Swiftmailer?

时间:2012-09-04 07:25:14

标签: symfony amazon-web-services amazon-ses

我已将应用程序移至symfony2中构建的amazon并使用swiftmailer发送电子邮件,我无法从该应用程序发送电子邮件。

搜索解决方案以发送电子邮件。如果有任何解决方案用于发送电子邮件SES或为symfony2配置SMTP,请告诉我。

4 个答案:

答案 0 :(得分:9)

我让我的工作有以下细节:

transport: "%mailer_transport%"
host:      "%mailer_host%"
username:  "%mailer_user%"
password:  "%mailer_password%"
auth_mode:  login
encryption: tls
port:  587
logging:  "%kernel.debug%"

最后,确保验证发送FROM电子邮件地址。

答案 1 :(得分:1)

我从未玩过AWS SES,但您可以使用mailjet发送电子邮件。您只需要配置Swiftmailer Transport以使用他们的SMTP就可以了。

他们还通过提供多种技术确保您的电子邮件发送良好(即:不是垃圾邮件)。你必须设置一些。

他们没有为Swiftmailer提供示例,但这里是Zend的一个好例子(你会看到它是多么容易):

$config = array(
  'ssl'      => 'ssl',
  'port'     => 465,
  'auth'     => 'login',
  'username' => 'your_Mailjet_API_Key',
  'password' => 'your_Mailjet_Secret_Key');

$transport = new Zend_Mail_Transport_Smtp('in-v3.mailjet.com', $config);

$mail = new Zend_Mail();

$mail->setFrom('your_sender@address.com', 'You');
$mail->addTo('recipient@example.com', 'Anybody');
$mail->setSubject('My first email by Mailjet');
$mail->setBodyText('Hello from Mailjet & Zend Framework !');

$mail->send($transport);

答案 2 :(得分:0)

Amazon SES拥有来自官方AWS Php SDK的优秀Php API:

http://docs.aws.amazon.com/aws-sdk-php/guide/latest/service-ses.html

正如您所看到的,SES不是用作SMTP网关(如Mailjet那样),而是用作HTTP API(通过Guzzle,用于HTTP查询的Php库)。依赖或不依赖亚马逊服务(如S3 / SeS / SNS等)始终是一个重要的决定...也许您不想依赖亚马逊技术?

答案 3 :(得分:0)

您可以尝试使用AWS SES Monitor Bundle管理通过SwiftMailer与Symfony发送电子邮件。

问题在于,当您从AWS SES开始,您处于沙箱中并上线时,您需要向亚马逊提出问题,要求您将其从发送箱中取出。

要求是您可以管理退回和投诉。 要获得有关这些的通知,您需要连接到简单通知服务(另一个选项是通过电子邮件收到通知)。

要自动化所有这些内容,您可以使用AWS SES Monitor Bundle为您完成所有这些操作。 它还为SwiftMailer注册了一个插件,它可以拦截消息并避免将消息发送到不应发送电子邮件的地址。