Настроить Rails 3.2 для отправки электронных писем с помощью Amazon Simple Email Service (SES) очень просто. Вам не нужно никаких дополнительных самоцветов или исправлений обезьян, чтобы это работало.
SES поддерживает STARTTLS через SMTP, а также TLS / SSL. Ниже показано, как настроить Rails для STARTTLS с SES.
Предпосылки
Если вы используете rails Mac OS X, вам может потребоваться правильно настроить OpenSSL для Ruby, прежде чем вы сможете использовать STARTTLS. Если вы используете Ruby 1.9.3 и RVM, вот один из способов сделать это:
rvm pkg install openssl
rvm reinstall 1.9.3 --with-openssl-dir=$rvm_path/usr
Если вы этого не сделаете, есть вероятность, что Ruby сгенерирует ошибку при попытке отправить электронное письмо.
Убедитесь, что вы подтвердили адрес электронной почты отправителя в AWS. Вы можете отправлять письма только с подтвержденным адресом электронной почты в качестве отправителя. Перейдите к опции «Проверенные отправители» в левом меню консоли AWS для SES.
Убедитесь, что у вас есть имя пользователя и пароль AWS SMTP для аутентификации. Перейдите к параметру «Настройки SMTP» в левом меню консоли AWS для настройки SES. Сначала вам будет предложено создать пользователя IAM (по умолчанию: ses-smtp-user), а затем вам будет показан SMTP-пользователь и пароль, которые выглядят как обычный ключ и секрет AWS. Обратите внимание, что пользователь IAM, то есть ses-smtp-user, является , а не пользователем SMTP, которого вы будете использовать для аутентификации.
Настройка Rails
В config / environment / development.rb и config / environment / production.rb добавьте следующее:
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
}
Отправка электронного письма
Вот и все. Теперь вы можете создать почтовую программу и отправлять электронные письма для удовольствия и получения прибыли!
Создание образца почтовой программы
rails g mailer user_mailer
В приложении / mailer / user_mailer.rb:
class UserMailer < ActionMailer::Base
# Make sure to set this to your verified sender!
default from: "your@verifiedsender.com"
def test(email)
mail(:to => email, :subject => "Hello World!")
end
end
В views / user_mailer / test.erb:
A quick brown fox jumped over the lazy dog.
Теперь запустите консоль и снимите тестовое письмо:
rails c
Loading development environment (Rails 3.2.1)
1.9.3p125 :001 > UserMailer.test("your@email.com").deliver