Come inviare email con un account Google da Ruby On Rails

Ho visto molti articoli sul web che spiegano come inviare un’email con un account Google da un’applicazione Ruby On Rails.
Tuttavia credo ci siano in rete diversi esempi non funzionanti o incompleti
Ecco perchè ho deciso di condividere una soluzione funzionante che ho usato in diversi progetti.

Il problema principale con Gmail o comunque con un indirizzo legato a Google Apps è che richiede di utilizzare una connessione ssl.
Fortunatamente, come spesso accade con Ruby On Rails la soluzione è piuttosto semplice.
E’ sufficiente installare la gem tlsmail con il comando:

1

gem install tlsmail

Fatto questo basta configurare i parametri per la casella email desiderata ad esempio nell’initializer mail.rb o dove lo si ritiene più opportuno, facendo attenzione ad aggiungere la riga

1

require 'tlsmail'

e ad impostare il parametro :tls => true.

Ecco lo snippet completo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

#Configure mail ony for production mode
if RAILS_ENV == 'production'
require 'tlsmail'
Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.default_charset = "utf-8"
ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.smtp_settings = {
:domain => "your-domain.com",
:address => 'smtp.gmail.com',
:port => 587,
:tls => true,
:authentication => :plain,
:user_name => 'address@your-domain.com',
:password => 'your-password'
}
end

Come vedete, utilizzando la gem tlsmail, configurare una casella Google mail diventa molto semplice.