In particolare si suppone che esistano degli utenti User con attibuto User.username per testare l'interazione con l'applicazione
1) il mailer model "notifier"
Il primo passo è la creazione di un controller per l'invio delle mail
$ script/generate mailer Notifier
exists app/models/
create app/views/notifier
exists test/unit/
create test/fixtures/notifier
create app/models/notifier.rb
create test/unit/notifier_test.rb
crea il model notifier.rb e la cartella nelle viste notifier che conterrà le viste ovvero i modelli dei testi delle mail che manderemo
2)Il metodo"notification"
Bisogna quindi creare il metodo in /models/notifier.rb
class Notifier < user =""> user)
def notification(user)
recipients "myname@gmail.com"#user.email
from "myname@gmail.com"
subject "New account information"
body (:user => user)# "account" => recipient
content_type "text/html"
end
end
:user passato nel body rende disponibile la variabile @user nella vista che andremo a creare per il testo della mail
3) Il testo della mail
creiamo il file /views/notifier/notification.html.erb
Hi <%= @user.username %>,
Thanks for joining our service! Please check back often.
in cui @user è l'utente che abbiamo passato per argomento precedentemente
4) Modifichiamo le impostazioni di invio
modifichiamo il file /config/environments/developments.rb
ActionMailer::Base.smtp_settings = {
:enable_starttls_auto => true,
:address => "smtp.gmail.com",
:port => 587,
:authentication => :plain,
:domain => "myname@gmail.com",
:user_name => "myname@gmail.com",
:password => "mynamepassword",
}
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
abbiamo completato le modifiche per testarle lanciamo la console con
script/console
Loading development environment (Rails 2.3.5)
>>
Quindi utilizziamo il methodo deliver per inviare la mail
>> Notifier.deliver_notification User.first
>> #TMail::Mail port=#TMail::StringPort:id=0x..fdb3d0cc4>
bodyport= #TMail::StringPort:id=0x..fdb3cf9d2
>>
Mail inviata e ricevuta