2013-11-13 3 views
2

Я использую Amazon AWS SES для отправки обычных писем с подтверждением, когда пользователь регистрируется. У меня есть мой адрес электронной почты и домен, но Rails не отправляет сообщение.AWS SES и Rails. Мое приложение не отправляет письма

Я установил драгоценный камень aws-ses, и это работает, потому что я сделал некоторые попытки из консоли Rails. Но когда он должен отправить его автоматически, я получаю:

I, [2013-11-13T12:36:21.953813 #3262] INFO -- : Completed 500 Internal Server Error in 1623ms 
F, [2013-11-13T12:36:21.958860 #3262] FATAL -- : 
AWS::SES::ResponseError (MessageRejected - Email address is not verified.): 

Мой amazon_ses.rb выглядит следующим образом:

ActionMailer::Base.add_delivery_method :ses, AWS::SES::Base, 
    access_key_id: 'ACCESS_KEY_ID', 
    secret_access_key: 'SECRET_ACCESS_KEY' 

И мой production.rb:

config.action_mailer.default_url_options = { :host => 'ismuser.com' } 
config.action_mailer.delivery_method = :ses 

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

Помощь?

+0

Возможно, вы захотите удалить свой доступ + секретный ключ ?! –

ответ

1
AWS::SES::ResponseError (MessageRejected - Email address is not verified.) 

Это значит, что вам нужно подтвердить адрес электронной почты для его использования в SES. Самый простой способ сделать это - войти в веб-консоль, перейти на SES и нажать «Адреса электронной почты», а затем подтвердить новый адрес.

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

+0

Я уже проверил свое письмо. Даже домен. Мне нужен способ сообщить aws-ses исходный адрес электронной почты, из которого я хочу отправить сообщение. –

+0

Если это помогает, я использую этот код, чтобы отправить сообщение: ActionMailer :: Base.mail (: from => from,: to => params [: to],: subject => params [: subject],: body => params [: contents],: content_type => "text/html"). – andreimarinescu

0

Не знаете, что пошло не так. Другой способ - использовать способ доставки smtp.

В AWS панели, нажмите на кнопку «Создать SMTP учетные данные»

Запишите имя пользователя и пароль, созданный

Добавьте это в разработке и production.rb файлов:

config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = { 
    :address => "email-smtp.us-east-1.amazonaws.com", 
    :user_name => "..." # Your SMTP user here. 
    :password => "...", # Your SMTP password here. 
    :authentication => :login, 
    :enable_starttls_auto => true 

}

0

Это может быть вызвано, если ваш регион не зарегистрирован как один и тот же с вашим приложением и SES. Посмотрите в верхнем правом углу панели/консоли AWS SES, и вы увидите название региона. Затем используйте этот код для сравнения:

ses = AWS::SES::Base.new(access_key_id: ENV['AWS_KEY'],secret_access_key: ENV['AWS_SECRET']) 

Чтобы создать новое соединение в консоли Rails. Он выплюнул выход так:

=> #<AWS::SES::Base:0x00000110d37618 
@access_key_id="<access_key_value>", 
@http=#<Net::HTTP email.us-west-2.amazonaws.com:443 open=false>, 
@path="/", 
@port=443, 
@proxy_server=nil, 
@secret_access_key="<secret_key_value>", 
@server="email.us-west-2.amazonaws.com", 
@settings={}, 
@use_ssl=true, 
@user_agent="github-aws-ses-ruby-gem"> 

Если регионы не совпадают установить его конкретно:

ses = AWS::SES::Base.new(
    access_key_id: ENV['AWS_KEY'], 
    secret_access_key: ENV['AWS_SECRET'], 
    server: 'email.us-west-2.amazonaws.com' 
    ) 
4

Я просто побежал в том же номере сегодня.

После некоторой отладки я решил, что SES инициирует использование неправильного сервера (я использую ЕС, тогда как США по умолчанию).

ActionMailer::Base.add_delivery_method :ses, AWS::SES::Base, 
    server: "email.eu-west-1.amazonaws.com", 
    access_key_id: PLEASE_REMOVE_YOUR_CREDENTIALS_FROM_QUESTION, 
    secret_access_key: PLEASE_REMOVE_YOUR_CREDENTIALS_FROM_QUESTION 

сделал трюк для меня.

Надеется, что это может помочь кому-то когда-нибудь ^^

1

Вот некоторые советы от самих Amazon:

Поздравляет!

Вы успешно проверили адрес электронной почты с Amazon Simple Email Service (Amazon SES). Теперь вы можете отправлять электронную почту с этого адреса.

Если вы новый пользователь Amazon SES и еще не получили production access на Amazon SES, то вы можете только отправлять электронную почту в адреса , которые ранее были проверены. Чтобы просмотреть список подтвержденных адресов электронной почты, перейдите на страницу Amazon SES console или обратитесь к Amazon SES Developer Guide.

Если вы уже получили разрешение на получение продукции, вы можете отправить электронное письмо на любой адрес.

- Verification Successful @ Amazon Simple Email Service (SES) | AWS

Ваш аккаунт Amazon SES имеет "песочницу" доступ в регионе ЕС (Ирландия). С доступом к песочнице вы можете отправлять электронную почту только на почтовый ящик Amazon SES и на адреса электронной почты или домены, которые вы подтвердили. Чтобы удалить из песочницы, запросите увеличение лимита отправки. Learn more.

- Sending Statistics @ SES Management Console

Так одна, по-видимому электронная почта проверка не достаточно, вы должны запросить доступ производства, чтобы иметь возможность отправлять электронную почту в реальном мире.

После подачи производства доступа запрос, вы получите сообщение, как:

Здравствуйте,

Поздравляем! После рассмотрения вашего дела мы увеличили вашу квоту до 50 000 сообщений в день, а максимальная скорость отправки до 14 сообщений в секунду в AWS Region EU (Ирландия). Ваша учетная запись также была перемещена из песочницы, поэтому вам больше не нужно проверять адреса получателей .

Убедитесь, что вы выбрали для Yesвсех бюрократических Yes/No вопросов, иначе инженер технической поддержки может отклонить запрос. По-видимому, это работает как отказ от лицензии/лицензионное соглашение.

Смежные вопросы