Paul Wright
2006-Aug-04 09:35 UTC
[Info] TMail included in ActionMailer differs from ''normal'' TMail
Issue: Just to hopefully save someone else a bunch of fun in the future - a modified version of TMail is automatically installed with Rails in the ActionMailer module. This version of TMail (which is required in your rails environment by convention) differs significantly from the package available at: http://i.loveruby.net/en/projects/tmail/ (Second hit on Google for ''tmail''.) At that site the author is very clear with where the division of labour is: "What TMail is NOT TMail does not touch mail body. Does not decode body, does not encode body, does not change line terminator. (I want to support Base64 auto-decoding although.) " However the vendor included version of TMail actually does decode the body for you and silently performs automatic quoted-printable conversion. Which, if you were previously developing your mail handling functions outside of rails, you may have already implemented yourself, with something like: def decode_quoted_printable(text) text.gsub(/\r\n/, "\n").unpack("M").first end But if you run this over an already decoded string then you''ll lose everything after the first equals sign. Which is probably not what you wanted, especially if you''re dealing with text/html. So if you''re trying, I don''t know, maybe to pull email in using net/imap, slap it into a database and then present a web frontend to that email then you''re probably better off starting from a rails environment rather than evolving from a basic import script to a full blown app. Possible Solution: * Include TMail in the RDOC generation for http://api.rubyonrails.com/ * Bump up the version number actionmailer-1.2.3/lib/action_mailer/vendor/tmail/info.rb or alter it somehow from the current ''0.10.7'' (which is also, confusingly, a previous version of TMail) * Push the changes upstream so both version are reunited with standard behaviour Cheers, Paul.