Подтвердить что ты не робот

Использование SAS ASA с Rails ActionMailer

Каким будет лучший способ сделать отправку электронной почты ActionMailer через Amazon SES в Rails 3?

Изменить:

Теперь это драгоценный камень:

gem install amazon-ses-mailer

https://rubygems.org/gems/amazon-ses-mailer

https://github.com/abronte/Amazon-SES-Mailer

4b9b3361

Ответ 1

У меня также есть жемчужина, которая поддерживает отправку электронной почты через SES из Rails 3:

https://github.com/drewblas/aws-ses

Он также имеет все API для проверки/управления адресами электронной почты

Ответ 2

Настройка Rails 3.2 для отправки электронной почты с помощью простой службы электронной почты Amazon (SES) проста. Вы не нуждаетесь в дополнительном gem или патче для обезьян, чтобы заставить его работать.

SES поддерживает как STARTTLS через SMTP, так и TLS/SSL. Ниже показано, как настроить Rails для STARTTLS с SES.

Предпосылки

  • Если вы используете рельсы 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 будет segfault при попытке отправить электронное письмо.

  1. Убедитесь, что вы подтвердили адрес электронной почты отправителя с помощью AWS. Вы можете отправлять письма только с подтвержденным адресом электронной почты в качестве отправителя. Перейдите к опции "Проверенные отправители" в меню слева в консоли AWS для SES.

  2. Убедитесь, что у вас есть имя пользователя и пароль AWS SMTP для аутентификации. Перейдите в "Настройки SMTP" в меню слева в консоли AWS для SES, чтобы установить это. Сначала вам будет предложено создать пользователя IAM (по умолчанию: ses-smtp-user), после чего вам будет показан пользователь и пароль SMTP, которые выглядят как обычный ключ и секрет AWS. Обратите внимание, что пользователь IAM, т.е. Ses-smtp-пользователь, не пользователь 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: "[email protected]"  

      def test(email)
        mail(:to => email, :subject => "Hello World!")
      end
    end 

В представлениях /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("[email protected]").deliver

Ответ 3

После того, как я немного пошутил, я просто сделал простой класс, чтобы сделать это.

https://github.com/abronte/Amazon-SES-Mailer

В рельсах вы можете получить закодированное сообщение электронной почты:

m = UserMailer.welcome.encoded
AmazonSES.new.deliver(m)

Ответ 4

Для настройки SSL TLS [рекомендуется с помощью Amazon SES]

Вам не нужен камень для этой вещи.

smtp - это defualt способ отправки электронной почты в rails, но вы можете добавить эту строку, чтобы явно определить в файле config/application.rb

config.action_mailer.delivery_method = :smtp

В config/application.rb или вы можете указать в определенном файле среды

config.action_mailer.smtp_settings = {
    address: 'Amazon SES SMTP HOSTNAME',
    port: 465,   #TLS port
    domain: 'example.com',
    user_name: 'SMTP_USERNAME',
    password: 'SMTP_PASSWORD',
    authentication: 'plain',   #you can also use login
    ssl: true,   #For TLS SSL connection
}

Amazon SES SMTP HOSTNAME специфичен для каждого региона, поэтому вы, имя которого вы находитесь, следуете за именами хостов по регионам.

  • email-smtp.us-east-1.amazonaws.com (для региона us-east-1)
  • email-smtp.us-west-2.amazonaws.com (для региона us-west-2)
  • email-smtp.eu-west-1.amazonaws.com (для региона eu-west-1)

fooobar.com/questions/142230/... | Amazon-get-started-send-use-smtp

Ответ 5

Я использую следующий камень:

https://github.com/aws/aws-sdk-rails

Он вытягивает стандартный aws-sdk, плюс позволяет установить ActionMailer для использования AWS SES. Пример:

# config/production.rb
# ...
config.action_mailer.delivery_method     = :aws_sdk

Ответ 6

Настройка вашего приложения Rails с помощью ASES Amazon

установите action_mailer.perform_deliveries в true, поскольку по умолчанию в среде разработки/производства

установлено значение false,
config.action_mailer.perform_deliveries = true

затем вставьте этот код в среду разработки/производства

config.action_mailer.smtp_settings = {
  :address => ENV["SES_SMTP_ADDRESS"],
  :port => 587,
  :user_name => ENV["SES_SMTP_USERNAME"], 
  :password => ENV["SES_SMTP_PASSWORD"],
  :authentication => :login,
  :enable_starttls_auto => true
}

Ответ 7

Я создал простой Rails/SES API, который использует Signature v4 для подписи запроса. Это лучше всего использовать для транзакционных электронных писем, таких как контакт с нами, регистрация пользователей и т.д.

Графический интегратор Rails Rails

Пожалуйста, не стесняйтесь улучшать его и вносить свой вклад.

Ответ 8

используя :sendmail, мне удалось получить все электронные письма, чтобы отправить запуск apt-get install postfix как root на мой AWS-машину и использовать все ответы по умолчанию.

Ответ 9

SES только что был выпущен сегодня в бета-версию, поэтому я сомневаюсь, что есть готовый к использованию камень (по крайней мере, не тот, который я видел). Вы можете написать собственный модуль на основе документов разработчика:

http://docs.amazonwebservices.com/ses/latest/DeveloperGuide/

Ответ 10

Вы можете указать способ доставки для почтовой программы действий в своей среде.

config.action_mailer.delivery_method = AmazonSES.deliver

Теперь вы, скорее всего, сами напишите код доставки.