SendGrid / envoi de courriels à Ruby on Rails (hébergé sur Heroku))

j'ai du mal à obtenir de sendgrid qu'il envoie des e-mails avec succès sur l'application rails 3.1 qui utilise authlogic pour l'authentification et qui est déployée sur heroku. j'ai la configuration suivante de mailer action sur config/environments/[development.rb et production.rb]:

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
}

pour la production.rb, le code ci-dessus est le même, sauf pour


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

quand j'exécute le mode de développement it, j'obtiens l'erreur suivante signalé:


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

maintenant, je ne sais vraiment comment le configurer pour qu'il fonctionne. est-ce que quelqu'un avec une certaine expérience antérieure sur la mise en place de sendgrid sur heroku et rails sait ce qui se passe?

merci beaucoup. vous êtes les meilleurs!!!

16
demandé sur Ringo Blancke 2012-01-09 03:15:33

3 réponses

http://devcenter.heroku.com/articles/sendgrid vous dira de mettre vos paramètres SMTP stuff dans config/initializers / mail.RB. MAIS... sur http://docs.sendgrid.com/documentation/get-started/integrate/examples/rails-example-using-smtp/ Il dit de mettre tous vos paramètres SMTP dans config/environment.rb au lieu de config/initializers/mail.rb

Donc la solution est de mettre cela dans votre environnement.dossier rb. C'est de cette façon mon environnement.rb ressemble:

# 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
}
$ heroku config -long

J'espère que ça aidera.. et plus de gens dans l'avenir de ce mal de tête.

43
répondu James F 2012-01-10 08:54:32

je suppose que vous voulez dire le mode de développement local? Si c'est le cas, je ne pense pas que L'add-on de SendGrid vous permette d'envoyer des e-mails depuis L'extérieur du réseau Heroku (car ils ont des comptes autonomes qu'ils préféreraient que vous utilisiez).

cela dit, vous n'avez pas besoin de configurer le courrier en production lorsque vous utilisez l'add-on de SendGrid car il est configuré automatiquement pour vous lorsque vous déployez votre application.

Vous pouvez donc supprimer votre config.action_mailer.smtp_settings code et utilisez simplement la valeur par défaut dans le développement.

0
répondu Neil Middleton 2012-01-08 23:24:20

notez aussi que si vous utilisez votre application Heroku sur la pile Bamboo, vous n'avez pas besoin de configurer vos paramètres dans l'environnement.dossier rb depuis Heroku le fait pour vous.

cependant, vous avez besoin de git push au moins une fois après que vous avez activé L'application à Heroku pour régler ces paramètres. J'ai fait cette erreur ce matin et j'ai trouvé ton courrier.

0
répondu Alextoul 2013-07-15 23:51:55