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!!!
3 réponses
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.
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.
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.