我已经将一个在symfony2中构建的应用程序移动到亚马逊,并使用swiftmailer发送电子邮件,我无法从该应用程序发送电子邮件。
因此,搜索发送电子邮件的解决方案。请让我知道是否有任何发送电子邮件SES或为symfony2配置SMTP的解决方案。
我用我的来处理以下细节:
transport: "%mailer_transport%"
host: "%mailer_host%"
username: "%mailer_user%"
password: "%mailer_password%"
auth_mode: login
encryption: tls
port: 587
logging: "%kernel.debug%"
最后,确保send FROM电子邮件地址经过验证。
我从未玩过AWS SES,但您可以使用mailjet发送电子邮件。你只需要配置Swiftmailer传输使用他们的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);
亚马逊SES拥有来自官方AWS Php SDK:的优秀Php API
http://docs.aws.amazon.com/aws-sdk-php/guide/latest/service-ses.html
正如你所看到的,SES并没有像Mailjet那样用作SMTP网关,而是作为HTTP API(通过Guzzle,一个用于HTTP查询的Php库)。依赖或不依赖亚马逊服务(如S3/SeS/SNS等)总是一个重要的决定……也许你不想依赖亚马逊的技术?
您可以尝试使用AWS SES Monitor Bundle来管理通过带有Symfony的SwiftMailer发送的电子邮件。
问题是,当你开始使用AWS SES时,你就处于沙箱中,要上线,你需要向亚马逊提交一个问题,要求将你从发送箱中删除。
要求是您可以管理反弹和投诉。要获取有关这些通知,您需要连接到简单通知服务(另一种选择是通过电子邮件获取通知)。
为了自动化所有这些东西,你可以使用AWS SES Monitor Bundle为你完成所有这些。它还为SwiftMailer注册了一个插件,可以拦截消息,避免将消息发送到不应该发送电子邮件的地址。