我在亚马逊的ec2上运行一个运行64位版CentOS的站点。我可以在Symfony2和Swiftmailer Bundle中使用亚马逊的SES吗?
该网站有一个简单的联系我们表格,需要发送电子邮件时提交几个地址(很基本)。
有没有人使用亚马逊SES与Symfony2中和Swiftmailer捆绑?如果是这样,你是否推荐使用SES或更传统的电子邮件服务器来完成这种类型的任务?
我在亚马逊的ec2上运行一个运行64位版CentOS的站点。我可以在Symfony2和Swiftmailer Bundle中使用亚马逊的SES吗?
该网站有一个简单的联系我们表格,需要发送电子邮件时提交几个地址(很基本)。
有没有人使用亚马逊SES与Symfony2中和Swiftmailer捆绑?如果是这样,你是否推荐使用SES或更传统的电子邮件服务器来完成这种类型的任务?
如果你可以用免费的层级限制(每日消息2K)坚持,我肯定会推荐你用SES坚持传统的电子邮件服务器,而不是。它很简单,易于与大多数平台集成,并且可以为您的电子邮件服务器消除维护和运营成本(尽管很小,但仍然存在)。当然,使用SES时仍然存在数据传输成本,您可以在Amazon SES pricing上看到,但这也可能适合您的需求。
自2011年12月您可以使用SMTP switfmail但在此之前的问题是,这个包还没有超过EC2工作的实施,但已经存在。如果您想发送电子邮件与一些框架样switfmail你应该有你的密码和密钥,并且做这样的事情:
require_once 'lib/swift_required.php';
//Create the Transport
$transport = new Swift_AWSTransport(
'AWS_ACCESS_KEY',
'AWS_SECRET_KEY'
);
//Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);
//Create the message
$message = Swift_Message::newInstance()
->setSubject("What up?")
->setFrom(array('[email protected]'))
->setTo(array('[email protected]'))
->setBody("
为了把你的AWS管理控制台内重点转到“>‘SMTP设置’>”创建我SMTP凭证”
你将需要安装这个扩展名:
https://github.com/jmhobbs/Swiftmailer-Transport--AWS-SES
但我repet这仅仅是信息现在,您应该验证之前,你的电子邮件帐户在您的AWS管理控制台和以后应该工作。
有可能通过SES发送电子邮件与随swiftmailer库的本机SMTP传输。以下示例使用版本4.2.2进行了测试。
亚马逊SES requires usage of TLS encryption。
Swift_SmtpTransport
运输类可以被配置为通过传递TLS作为第三个构造函数参数使用TLS加密:
require_once './vendor/swiftmailer/swiftmailer/lib/swift_required.php';
// Create the Transport
$transport = Swift_SmtpTransport::newInstance(
'email-smtp.us-east-1.amazonaws.com',
25,
'tls'
)
->setUsername('AWS_ACCESS_KEY')
->setPassword('AWS_SECRET_KEY')
;
// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);
// Create a message
$message = Swift_Message::newInstance('Wonderful Subject')
->setFrom(array('[email protected]'))
->setTo(array('[email protected]' => 'John Doe'))
->setBody('Here is the message itself')
;
// Send the message
$result = $mailer->send($message);
在Symfony2中,您可以配置swiftmailer
服务使用TLS加密:
# app/config/config.yml
swiftmailer:
transport: smtp
host: email-smtp.us-east-1.amazonaws.com
username: AWS_ACCESS_KEY
password: AWS_SECRET_KEY
encryption: tls
直接安装在EC2实例的邮件服务器发送的邮件是不是很可靠,因为EC2 IP地址可能被列入黑名单。建议使用可信的邮件服务器,所以使用SES似乎是一个好主意。
有一个SES运输为swiftmailer预建。很容易设置:
通过Symfony2中通过SES发送邮件开箱没有工作适合我,因为我在我的config.yml配置卷轴选项。
我偶然发现的另一个问题是港口。港口25和587工作完美,但让我暂停。
重要的是,您使用正确的SMTP服务器,起初我使用我们东1(因为我从一个例子中复制它),虽然我的SMTP实际上是电子邮件smtp.eu-west-1。 amazonaws.com
因此,这里是我目前的配置:
parameters:
mailer_transport: smtp
mailer_host: email-smtp.eu-west-1.amazonaws.com
mailer_user: AWS_ACCESS_KEY
mailer_password: AWS_SECRET_KEY
mailer_encryption: tls
mailer_port: 587
swiftmailer:
transport: %mailer_transport%
host: %mailer_host%
username: %mailer_user%
password: %mailer_password%
encryption: "%mailer_encryption%"
port: %mailer_port%
auth_mode: login
我通过执行我的命令行下面发现了问题:
php app/console swiftmailer:debug
看起来像在[Swift_TransportException]中使用端口465的结果 无法与主机建立连接email-smtp.us-east-1.amazonaws.com [连接超时#110]更改为端口587修复问题 – 2014-11-22 20:36:10
谢谢为''587''技巧!我用''487''也超时了 – Cassiano 2016-02-11 15:13:59
至于现在需要的是您管理和反弹的投诉,你可以n使用AWS SES Monitor软件包执行此操作。它还提供了一些有用的命令来自动创建主题,以通过AWS SNS获取有关反弹,投诉和交付的通知。该软件包是github.com/Aerendir/aws-ses-monitor-bundle。希望这会有所帮助。 – Aerendir 2016-08-08 10:42:38