Проблемы отправки Sendgrid / электронной почты в Ruby on Rails (размещены на Heroku) - PullRequest
16 голосов
/ 09 января 2012

У меня возникла проблема с получением sendgrid для успешной отправки электронной почты в приложении rails 3.1, которое использует authlogic для аутентификации и разворачивается на heroku. у меня есть следующая конфигурация почтовой программы действий в config / средах / [development.rb и production.rb]:

<code>config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.default_charset = "utf-8"
config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_deliveries = true
config.action_mailer.smtp_settings = {
  :address => 'smtp.sendgrid.net',
  :port => 587,
  :domain => ENV['SENDGRID_DOMAIN'],
  :user_name =>  ENV['SENDGRID_USERNAME'],
  :password => ENV['SENDGRID_PASSWORD'],
  :authentication => 'plain',
  :enable_starttls_auto => true
}

для production.rb, приведенный выше код такой же, за исключением

<code>
    config.action_mailer.default_url_options = { :host => [app name in heroku] }

когда я запускаю его в режиме разработки, я получаю сообщение об ошибке:

<code>
    Completed 500 Internal Server Error in 21740ms
    Net::SMTPFatalError (550 Cannot receive from specified address notification@[app-domain]: Unauthenticated senders not allowed
):

Теперь я не знаю, как его настроить, чтобы он работал. кто-нибудь с некоторым опытом установки sendgrid на heroku и rails знает, что происходит?

Большое спасибо. вы, ребята, лучшие !!!

Ответы [ 3 ]

43 голосов
/ 10 января 2012

Я потратил полдня на это и, наконец, начал работать.Весьма расстроен из-за плохой ошибки в документации.Кстати, я использую Rails 3.1 и стек Cedar на Heroku.

Так что http://devcenter.heroku.com/articles/sendgrid скажет вам, что вы должны поместить ваши настройки SMTP в config / initializers / mail.rb.НО ... на http://docs.sendgrid.com/documentation/get-started/integrate/examples/rails-example-using-smtp/ он говорит, чтобы поместить все ваши настройки SMTP в config / environment.rb вместо config / initializers / mail.rb

Итак, решениеэто поместить это в ваш файл environment.rb.Вот как выглядит мой environment.rb:

# Load the rails application
require File.expand_path('../application', __FILE__)

# Initialize the rails application
Freelanceful::Application.initialize!

# Configuration for using SendGrid on Heroku
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
  :user_name => "yourSendGridusernameyougetfromheroku",
  :password => "yourSendGridpasswordyougetfromheroku",
  :domain => "staging.freelanceful.com",
  :address => "smtp.sendgrid.net",
  :port => 587,
  :authentication => :plain,
  :enable_starttls_auto => true
}

Чтобы получить имя пользователя и пароль SendGrid, введите

$ heroku config -long

Надеюсь, что это поможет ... и еще большему количеству людей в будущем от этой головной боли.

0 голосов
/ 16 июля 2013

Также обратите внимание, что если вы запускаете приложение Heroku в стеке Bamboo, вам не нужно настраивать параметры в файле environment.rb, поскольку Heroku сделает это за вас.

Однако вам нужно нажать git push хотя бы один раз после того, как вы активировали приложение в Heroku, чтобы установить эти настройки. Я сделал эту ошибку сегодня утром и нашел ваш пост.

0 голосов
/ 09 января 2012

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

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

Поэтому вы можете удалить свой код config.action_mailer.smtp_settings и просто использовать значение по умолчанию при разработке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...