|
Ruby on Rails: inviare mail tramite ActionMailer
Descriviamo brevemete l'utilizzo della libreria ActionMailer per l'invio di mail attraverso rails.
Come prima cosa si dovrà andare nella RAILROOT della vostra applicazione e generare un mailer come segue:
ruby script/generate mailer Notifier
Tale operazione genererà una serie di files
Nella cartella app/models ad esempio troveremo un file nominato notifier.rb che apparirà come tale:
class Notifier < ActionMailer::Base
end
A questo punto andrà inserito un metodo all'interno della classe che servirà a definire i campi utili per la mail
class Notifier < ActionMailer::Base
def signup_thanks( user )
# Email header info MUST be added here
recipients user.email
cc "nome@address.com"
bcc "nome@address.com"
from "miosito@miosito.com"
subject “Messaggio dell'oggetto”
sent_on Time.now
attachment :content_type => "image/jpeg",
:body => File.read("an-image.jpg")
# Email body substitutions go here
body :first_name => user.first_name, :last_name => user.last_name
end
end
In particolare il campo recipients è quello del destinatario to: mentre il campo body ha la prerogativa di consentire la sostituzione di parametri nel testo della mail
A questo punto nella cartella app/views/notifier inseriremo il file signup_tanks.rhtml che costituirà la vista del nostro messaggio
Carissimo <%= @first_name %> <%= @last_name %>,
Grazie per aver visitato il mio sito!
Dove ovviamente first_name e last_name sono riempiti dinamicamente.
A questo punto nel basterà inviare la mail attraverso la sua "delivery" all'interno del controller con il semplice metodo delivery
def show_page_after_account_creation
...
Notifier.deliver_signup_thanks(user)
...
end
dove user sarà un oggetto che ovviamente possiederà i campi email, first_name, last_name
Come ultimo step basterà inizializzare il nostro activeMailer per la nostra applicazione andando ad aggiungere nel file RAILROOT/config/environment.rb dopo il blocco Rails::Initializer.run do |config| block
i parametri di configurazione del nostro smtp
ActionMailer::Base.smtp_settings = {
:address => "smtp.miodominio.com",
:port => 25,
:domain => "www.miowebsite.com",
:user_name => "utente@miodominio.com",
:password => “miapassword”,
:authentication => :login
}
A questo punto sarà necessario riavviare il server per far sì che l'ActionMailer sia inizializzato e il gioco è fatto.
Per tutte le informazioni necessarie su ActionMailer rimandiamo al link
http://api.rubyonrails.com/classes/ActionMailer/Base.html
|