2012-02-07 41 views
7

Tôi đang lưu trữ trang web trên ec2 của Amazon chạy phiên bản CentOS 64 bit.Tôi có thể sử dụng SES của Amazon với Symfony2 và Gói Swiftmailer không?

Trang web có đơn giản Liên hệ với chúng tôi biểu mẫu cần gửi email đến một số địa chỉ khi được gửi (khá cơ bản).

Có ai đã sử dụng SES của Amazon với Symfony2 và Gói Swiftmailer không? Và nếu có, bạn có khuyên bạn nên sử dụng SES hoặc một máy chủ email truyền thống cho loại tác vụ này không?

+0

Như bây giờ là cần thiết mà bạn quản lý bị trả lại và khiếu nại, bạn ca n sử dụng gói AWS SES Monitor để thực hiện việc này. Nó cũng cung cấp một số lệnh hữu ích để tự động hóa việc tạo chủ đề để nhận thông báo qua AWS SNS về trả lại, khiếu nại và giao hàng. Gói là github.com/Aerendir/aws-ses-monitor-bundle. Hy vọng điều này sẽ giúp. – Aerendir

Trả lời

1

Nếu bạn có thể gắn bó với giới hạn cấp miễn phí (2K tin nhắn hàng ngày), tôi chắc chắn khuyên bạn nên gắn bó với SES thay vì máy chủ email truyền thống. Thật đơn giản, dễ tích hợp với hầu hết các nền tảng và bạn loại bỏ chi phí bảo trì và vận hành (mặc dù nhỏ, chúng vẫn ở đó) cho máy chủ email của bạn. Tất nhiên, vẫn có chi phí chuyển dữ liệu khi sử dụng SES, như bạn có thể thấy trên Amazon SES pricing, nhưng điều đó cũng có thể phù hợp với nhu cầu của bạn.

1

Kể từ tháng 12 năm 2011, bạn có thể sử dụng smtp với switfmail nhưng trước khi Vấn đề là gói này vẫn không có triển khai cho công việc trên EC2, nhưng đã tồn tại. Nếu bạn muốn gửi email với một số khuôn khổ như switfmail bạn nên có mật khẩu và chìa khóa của bạn, và làm điều gì đó như thế này:

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(" 

Đối với mất đi chìa khóa của bạn bên trong AWS Management Console "> 'SMTP Settings'>" tạo của tôi chứng chỉ SMTP"

Và bạn sẽ cần phải cài đặt phần mở rộng này:.

https://github.com/jmhobbs/Swiftmailer-Transport--AWS-SES

nhưng tôi repet đây chỉ là thông tin Bây giờ, bạn nên xác minh tài khoản email của bạn trước khi về Quản trị AWS của bạn Console và sau đó sẽ hoạt động.

11

Có thể gửi email qua SES bằng phương tiện SMTP gốc đi kèm với thư viện swiftmailer. Các ví dụ dưới đây được kiểm tra bằng phiên bản 4.2.2.

Amazon SES requires usage of TLS encryption.

lớp Swift_SmtpTransport vận chuyển có thể được cấu hình để sử dụng mã hóa TLS bằng cách thông qua tls như là đối số constructor thứ ba:

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); 

Trong Symfony2, bạn có thể cấu hình các dịch vụ swiftmailer sử dụng mã hóa 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 

Gửi email trực tiếp từ máy chủ thư được cài đặt trên phiên bản EC2 không đáng tin cậy vì địa chỉ IP EC2 có thể bị liệt vào danh sách đen. Chúng tôi khuyên bạn nên sử dụng một máy chủ đáng tin cậy để sử dụng SES có vẻ là một ý tưởng hay.

7

Gửi mail thông qua SES qua Symfony2 đã không làm việc ra khỏi hộp cho tôi vì tôi đã có tùy chọn ống cấu hình trong config.yml tôi.

Một vấn đề khác mà tôi gặp phải là cổng. Cổng 25 và 587 hoạt động hoàn hảo nhưng khiến tôi hết thời gian chờ.

Và điều quan trọng là bạn đang sử dụng máy chủ SMTP phù hợp, lúc đầu tôi đang dùng us-east-1 (vì tôi đã sao chép từ ví dụ) mặc dù SMTP của tôi thực sự là email smtp.eu-west-1. amazonaws.com

Vì vậy, đây là cấu hình hiện tại của tôi:

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 

tôi thấy vấn đề bằng cách thực hiện như sau trên dòng lệnh của tôi:

php app/console swiftmailer:debug 
+1

Có vẻ như sử dụng kết quả cổng 465 trong '[Swift_TransportException] Không thể thiết lập kết nối với máy chủ email-smtp.us-east-1.amazonaws.com [Kết nối hết thời gian chờ # 110] 'thay đổi thành cổng 587 khắc phục sự cố –

+0

Cảm ơn cho '587'' lừa! Tôi cũng đã hết thời gian chờ với '' 487'' – Cassiano

Các vấn đề liên quan