2010-10-18 2 views
8

J'utilise SendGrid pour envoyer des emails sur Heroku ...Rails ActionMailer avec SendGrid

Le problème jusqu'à présent est alors qu'il fonctionne très bien sur Heroku, sur mon hôte local, il échoue.

En ce moment, j'ai SendGrig installer ici, config/setup_mail.rb:

ActionMailer::Base.smtp_settings = { 
    :address  => "smtp.sendgrid.net", 
    :port   => "25", 
    :authentication => :plain, 
    :user_name  => ENV['SENDGRID_USERNAME'], 
    :password  => ENV['SENDGRID_PASSWORD'], 
    :domain   => ENV['SENDGRID_DOMAIN'] 
} 

Qu'est-ce qu'un moyen Heroku/SendGrid pour me permettre de faire en sorte que mes expéditeurs travaillent dans DEV. Est-ce que ce fichier setup_mail.rb est une bonne chose? Devrait-il être dans le fichier env? D'autres pensées?

Merci

Répondre

11

Utilisation de config/environments/[development.rb | production.rb] comme mentionné ci-dessus sonne comme son chemin à parcourir. Placez simplement la configuration ActionMailer dans l'un de ces fichiers et modifiez-la pour l'adapter à l'environnement de développement | production.

Vous pouvez également trouver vos informations d'identification SendGrid utilisés par Heroku en exécutant la commande suivante:

heroku config --long

Ces informations d'identification sont utilisés pour toutes les authentifications SendGrid (Auth SMTP, le site vous connecter pour voir les statistiques, etc., l'accès API)

- Joe

SendGrid

+2

Il semble que 'heroku config --long' ne fonctionne plus. 'heroku config: obtenez SENDGRID_USERNAME' et' heroku config: obtenez SENDGRID_PASSWORD' vous obtenez la même information. –

+5

ou simplement 'heroku config' sans les paramètres –

4

Il suffit de définir les variables d'environnement sur votre environnement de développement pour SENDGRID_USERNAME, SENDGRID_PASSWORD et SENDGRID_DOMAIN. Alors ça va marcher.

Vous pouvez obtenir les valeurs correctes pour ceux-ci à partir de votre application Heroku. Ouvrir console heroku et obtenir les valeurs de ENV['SENDGRID_USERNAME'] et ainsi de suite. Ou simplement utiliser un ensemble différent de paramètres SMTP localement. Ou utilisez sendmail ou quelque chose.

+0

Merci, "utiliser un ensemble différent de paramètres SMTP localement" c'est exactement ce que j'essaie d'apprendre à faire. Quelle est la bonne façon pour Rails de faire ce réglage à travers les envs? – AnApprentice

+0

Je crois que vous pouvez simplement définir 'ActionMailer :: Base.smtp_settings' dans chacun de vos fichiers d'initialisation de l'environnement (' config/environments/foo.rb'). Je ne suis pas exactement certain sur le Rails Way ici; Je n'ai pas configuré le courrier de cette manière depuis un moment. – tfe

+1

Je cours plusieurs applications sur Heroku avec SendGrid, mais j'ai rencontré le même problème (désirant envoyer du courrier localement aussi bien que sur Heroku). Ce que j'ai fait était juste aller à SendGrid moi-même et vous inscrire pour un compte. Puis j'ai eu le nom d'utilisateur et mot de passe que je pouvais définir dans l'application pour tous les environnements, et ces informations d'identification n'étaient pas enfermés dans le 'ENV' de l'application Heroku. – tfe

Questions connexes