26 Jan
duccio

duccio il 26 January 2007 parla di Rails Snippet

Rails 1.2 e ActionMailer con contenuti multipart/alternative

Fino all’uscita del Rails 1.2.1 per mandare le mail sia testuali che html si doveva fare qualcosa di questo genere nel notifier:

    1 def message
    2   setup_email
    3   @subject += "Come spedire una mail sia in html che in formato testuale"
    4   content_type "multipart/alternative"
    5   part :content_type => "text/plain",
    6   :body => render_message("message_plain")
    7   part :content_type => "text/html",
    8   :body => render_message("message_html")
    9 end
   10 
   11 protected
   12 def setup_email(user = nil)
   13   @recipients  = "dest@riprova.it"
   14   @from        = "prova@prova.it <Sig. Prova>"
   15   @subject     = "[Prova] "
   16   @sent_on     = Time.now
   17 end

Chiaramente ci dovevano essere due viste .rhtml una chiamata message_text ed una message_html, con i contenuti della mail sia in formato testuale che in formato html; stando attenti a come scrivere l’html così da consentire a qualunque programma di posta e sulla web mail di vederle correttamente.

Gli utlimi due progetti curati abbiamo iniziato a svilupparli direttamente in rails 1.2.1, e alcune cosette che avevamo fatto non funzionano correttamente, tipo l’invio delle mail multipart/alternative.

Se volete inviare mail multipart/alternative non dovete fare altro che, nel vostro modello “notifier”, impostare i parametri per l’invio come il recipient, il from, il subject e chiamare le viste come la funzione aggiungendo il content type direttamente nel nome del file.

    1 def message
    2   setup_email
    3   @subject += "Come spedire una mail sia in html che in formato testuale"
    4 end
    5 
    6 protected
    7 def setup_email(user = nil)
    8   @recipients  = "dest@riprova.it"
    9   @from        = "prova@prova.it <Sig. Prova>"
   10   @subject     = "[Prova] "
   11   @sent_on     = Time.now
   12 end

I file da inviare si chiameranno così:

  • message.text.plain.rhtml
  • message.text.html.rhtml

E vedrete che partiranno e verranno lette senza alcun problema.

2 Commenti a “Rails 1.2 e ActionMailer con contenuti multipart/alternative”

  1. federico il 13 March 2007 alle 11:12 dice:

    Lo proverò.
    Sto cercando di costruire un form contatti per mephisto, ma non capisco se sia già predisposto o se l’idea di un form contatti non sia presa in considerazione.
    Non c’è documentazione a riguardo.

    Grazie ragazzi per il blog. Ottimo lavoro (anche dal lato estetico).

  2. duccio il 13 March 2007 alle 11:35 dice:

    Vedrai che mandare le mail degradanti con rails 1.2 è molto più veloce di prima!!
    Mephisto non ha un form dei contatti, credo, se vai a vedere tra i suoi modelli c’è solo uno user_notifier che manda la mail del forgot password.

Scrivi un commento