Frederic de Villamil


, , , , , , , , ,


Partagez sur Twitter Partagez sur Facebook Partagez sur Google Plus Partagez sur Linkedin Plus

Envoyer des mails via Gmail ou SMTP et TLS avec une application Ruby On Rails

Par défaut, Ruby On Rails n’a pas la possibilité d’envoyer des emails via un serveur SMTP utilisant TLS comme celui de Gmail. Heureusement, ce n’est pas très difficile à mettre en place, et je vous propose donc de le faire pas à pas dans votre application Rails d’une part, et sur Typo, le blogware en Ruby on Rails d’autre part.

Premièrement, installez le plugin ActionMail Optional TLS plugin. Celui-ci va étendre la classe ActionMailer afin d’ajouter le support de TLS. Depuis le répertoire de votre application Rails, lancez en ligne de commande :

<typo:code lang=”sh”> ./script/plugin install http://github.com/collectiveidea/actionmaileroptional_tls </typo:code>

Jusque là, rien de bien compliqué.

Maintenant, éditez votre fichier config/environment.rb.

S’il contient déjà une directive ActionMailer::Base.smtp_settings, supprimez la.

Si vous utilisez Typo, supprimez le bloc de code suivant :

<typo:code lang=’ruby’> if RAILS_ENV != ‘test’ begin

mail_settings = YAML.load(File.read("#{RAILS_ROOT}/config/mail.yml"))

ActionMailer::Base.delivery_method = mail_settings['method']
ActionMailer::Base.server_settings = mail_settings['settings']

rescue

# Fall back to using sendmail by default
ActionMailer::Base.delivery_method = :sendmail

end end </typo:code>

À la fin de votre fichier config/environment.rb, ajoutez le code suivant :

<typo:code lang=’ruby’> if RAILSENV != ‘test’ ActionMailer::Base.smtpsettings = {

:tls => true,
:address => "smtp.gmail.com",
:port => "587",
:domain => "YOURDOMAIN",
:authentication => :plain,
:user_name => "GOOGLEUSERNAME",
:password => "GOOGLEPASSWORD"

} end </typo:code>

Servez-vous une vodka à ma santé – et n’hésitez pas à m’en offrir une bouteille – redémarrez votre application Rails, et ayez le plaisir de recevoir des emails depuis Gmail, ou tout autre SMTP utilisant TLS.