2012-02-07 53 views
7

我在亞馬遜的ec2上運行一個運行64位版CentOS的站點。我可以在Symfony2和Swiftmailer Bundle中使用亞馬遜的SES嗎?

該網站有一個簡單的聯繫我們表格,需要發送電子郵件時提交幾個地址(很基本)。

有沒有人使用亞馬遜SES與Symfony2中和Swiftmailer捆綁?如果是這樣,你是否推薦使用SES或更傳統的電子郵件服務器來完成這種類型的任務?

+0

至於現在需要的是您管理和反彈的投訴,你可以n使用AWS SES Monitor軟件包執行此操作。它還提供了一些有用的命令來自動創建主題,以通過AWS SNS獲取有關反彈,投訴和交付的通知。該軟件包是github.com/Aerendir/aws-ses-monitor-bundle。希望這會有所幫助。 – Aerendir 2016-08-08 10:42:38

回答

1

如果你可以用免費的層級限制(每日消息2K)堅持,我肯定會推薦你用SES堅持傳統的電子郵件服務器,而不是。它很簡單,易於與大多數平臺集成,並且可以爲您的電子郵件服務器消除維護和運營成本(儘管很小,但仍然存在)。當然,使用SES時仍然存在數據傳輸成本,您可以在Amazon SES pricing上看到,但這也可能適合您的需求。

1

自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管理控制檯和以後應該工作。

11

有可能通過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似乎是一個好主意。

7

通過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 
+1

看起來像在[Swift_TransportException]中使用端口465的結果 無法與主機建立連接email-smtp.us-east-1.amazonaws.com [連接超時#110]更改爲端口587修復問題 – 2014-11-22 20:36:10

+0

謝謝爲''587''技巧!我用''487''也超時了 – Cassiano 2016-02-11 15:13:59