2009-09-16 7 views
0

Je souhaite stocker des e-mails dans une base de données et les afficher correctement dans Ruby on Rails pour l'utilisateur (idéalement avec un en-tête formaté et pliable, un support de pièces jointes, etc.). Y a-t-il déjà un bon moyen de le faire?Afficher l'email Ruby on Rails

À l'heure actuelle, je stocke les courriels à la base de données sous forme de texte, mais je suis aux prises avec un bon moyen de les afficher à l'utilisateur sur la page rails?

Des suggestions? Je suis ouvert à changer la façon dont je stocke l'email à la base de données s'il y a une meilleure façon.

Merci d'avance!

Répondre

2

Vous voudrez peut-être consulter la bibliothèque TMail, qui est fournie avec des rails (et peut être mise à jour seule). Supposons que vous ayez un modèle appelé Message qui correspond à la table contenant les mails, et qu'un attribut/colonne appelé raw_mail contient le texte du courrier brut.

Vous pouvez instancier un objet TMAil::Mail et de travailler avec elle comme ça:

@email = TMail::Mail.parse(Message.find(params[:id]).raw_mail) 

Cela vous donne, par exemple, avec:

@email.body # => Dear NoahD, how are you? I'm fine... 
@email.subject # => Hello from New Zealand 
@email.has_attachment? #=> true 
@email.attachments.first.original_filename # => kiwi.jpg 

En ce que le stockage du courrier va: Mails peut contient des caractères non-ASCII, donc vous devez peut-être vous assurer que le type de colonne choisi pour raw_mail par ActiveRecord est réellement capable de gérer ces données. Je pense que :binary est un bon choix là-bas.