2009-09-16 8 views
0

Tâche donnée: un e-mail est stocké, octet pour octet, en un ou plusieurs fragments (de longueur fixe) dans une base de données. Ce courrier doit être extrait de cette base de données et son contenu doit être affiché à l'utilisateur.Récupération et analyse d'un e-mail MIME à partir d'une base de données

Je n'ai aucun problème à encapsuler la base de données existante dans un modèle ActiveRecord, en concaténant les blocs stockés, etc. Ce que je ne sais pas vraiment, c'est par où commencer sur la partie d'analyse MIME. Je pensais à quelque chose comme peut-être avoir une classe dédiée EMail que je peux initialiser avec les données stockées dans la base de données et cette classe me permettrait de voir quelles parties MIME le mail contient et m'a permis d'afficher, par exemple les text/* parties . Maintenant, il semble qu'ActionMailer soit capable d'analyser les mails entrants, mais la publication sur la réception des mails semble être plutôt «clairsemée» et mentionne simplement la réception des mails de STDIN.

Comment puis-je analyser et afficher un message MIME (ou des parties de celui-ci) dans Rails, étant donné que je peux fournir son contenu sous la forme d'une seule chaîne, variable, résultat de requête ou similaire?

Répondre

0

Jetez un oeil à MMS2R. Je l'utilise depuis peu pour analyser les courriels et ça fait du bon boulot.

0

Je me suis trompé. Rails est livré avec le TMail library, qui est parfaitement capable d'analyser les emails MIME. Le flux de travail de base est aussi facile que concaténer les morceaux d'un message enregistré et de les transmettre à TMail::Mail.parse comme ceci:

email = TMail::Mail.parse(StoredMessage.find(:all, 
    :conditions => ["mail_id = ?", "oyByGqacG73b"], 
    :order => "chunk_ind").collect(&:mail_text).join) 

email.body #=> this is your test body 
email.subject # => test subject 
email.has_attachment? #=> true 
email.attachments.first.original_filename # => bulkfile 

Je vous présente mes excuses pour avoir vraiment raté une bibliothèque dans Rails.

+0

"has_attachment * s *?" (pluriel) est le nom correct pour la méthode –

0

"has_attachment * s *?" (pluriel) est le nom correct pour la méthode

+1

Ceci est vraiment un commentaire, pas une réponse à la question. Vous pouvez toujours commenter vos propres messages, et une fois que vous aurez suffisamment de [réputation] (http://stackoverflow.com/faq#reputation) vous pourrez [commenter n'importe quel message] (http://stackoverflow.com/ privilèges/commentaire). –

+0

Merci. C'est fait. –

Questions connexes