Thiết lập Rails 3.2 để gửi email bằng dịch vụ Email đơn giản của Amazon (SES) thật dễ dàng. Bạn không cần bất kỳ đá quý bổ sung hoặc khỉ vá để làm cho nó hoạt động.
SES hỗ trợ cả STARTTLS qua SMTP cũng như TLS/SSL. Phần sau đây trình bày cách thiết lập Rails cho STARTTLS với SES.
Điều kiện tiên quyết
Nếu bạn đang chạy đường ray Mac OS X, bạn có thể cần phải cấu hình OpenSSL cho Ruby một cách chính xác trước khi bạn có thể sử dụng STARTTLS. Nếu bạn đang sử dụng của Ruby 1.9.3 và RVM, đây là một cách để làm điều này:
rvm pkg install openssl
rvm reinstall 1.9.3 --with-openssl-dir=$rvm_path/usr
Nếu bạn không làm điều này, có một khả năng rằng Ruby sẽ segfault khi bạn cố gắng gửi e-mail.
Đảm bảo bạn đã xác minh địa chỉ email người gửi của mình với AWS. Bạn chỉ có thể gửi email có địa chỉ email đã được xác minh là người gửi. Đi tới tùy chọn "Người gửi được xác minh" trên menu bên trái trong bảng điều khiển AWS cho SES.
Đảm bảo bạn có tên người dùng và mật khẩu SMTP AWS để xác thực. Đi tới tùy chọn "Cài đặt SMTP" trên menu bên trái trong bảng điều khiển AWS cho SES để thiết lập điều này. Trước tiên, bạn sẽ được nhắc tạo một người dùng IAM (mặc định: người dùng smtp-ses) và sau đó bạn sẽ được hiển thị người dùng SMTP và mật khẩu, trông giống như khóa AWS thông thường và bí mật. Lưu ý rằng người dùng IAM, tức là người dùng có tài khoản smtp là không phải là người dùng SMTP mà bạn sẽ sử dụng để xác thực.
Cấu hình Rails
Trong config/môi trường/development.rb và config/môi trường/production.rb, thêm dòng sau:
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => "email-smtp.us-east-1.amazonaws.com",
:port => 587, # Port 25 is throttled on AWS
:user_name => "...", # Your SMTP user here.
:password => "...", # Your SMTP password here.
:authentication => :login,
:enable_starttls_auto => true
}
Gửi email
Đây là nó. Bây giờ bạn có thể tiếp tục và tạo một bưu phẩm và bắt đầu gửi email cho vui và lợi nhuận!
Tạo một mẫu bưu phẩm
rails g mailer user_mailer
Trong ứng dụng/bưu phẩm/user_mailer.rb:
class UserMailer < ActionMailer::Base
# Make sure to set this to your verified sender!
default from: "[email protected]"
def test(email)
mail(:to => email, :subject => "Hello World!")
end
end
Trong views/user_mailer/test.erb:
A quick brown fox jumped over the lazy dog.
Bây giờ , khởi chạy bảng điều khiển và tắt email kiểm tra:
rails c
Loading development environment (Rails 3.2.1)
1.9.3p125 :001 > UserMailer.test("[email protected]").deliver
Nguồn
2012-03-31 08:44:16
Trong trường hợp bất kỳ ai vẫn đang truy cập câu trả lời này, đá quý ở trên có các vấn đề xác minh chứng chỉ với SSL trong JRuby (có thể bên ngoài JRuby), có thể được khắc phục bằng cách sửa đổi đá quý như vậy: http://martinottenwaelter.fr/2010/12/ ruby19-and-the-ssl-error/ – laker
tại sao "chính thức"? – lulalala