我在亞馬遜的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