softwareengineer 99
2006-Feb-06 20:59 UTC
[Rails] ActionMailer - ROR Recipes - Multipart/alternative
I am using the SaltedHashLoginGenerator. and would like to send the e-mail in multipart/alternative format. By default my application is using forgot_password_en.rhtml template. I read in the ROR Recipes book "ActionMailer sees these templates, recognizes the pattern in their file names, and automatically sets the MIME type of the message to multipart/alternative and adds each rendered view with the content type in its file name." So I created forgot_password_en.text.plain.rhtml template and forgot_password_en.text.html.rhtml templates (and removed the forgot_password_en.rhtml template temporarily). Now my application won''t send any email. How can I make ActionMailer recognize these templates and set the appropriate MIMe type? My mailer function looks like this: def forgot_password(member, url=nil) setup_email(member) # Email header info @subject += "Forgotten password notification" # Email body substitutions @body["name"] = "#{member.firstname} #{member.lastname}" @body["login"] = member.login @body["url"] = url || MemberSystem::CONFIG[:app_url].to_s @body["app_name"] = MemberSystem::CONFIG[:app_name].to_s end Thanks for your assistance. Frank --------------------------------- Yahoo! Mail - Helps protect you from nasty viruses. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://wrath.rubyonrails.org/pipermail/rails/attachments/20060206/0d6cafbc/attachment.html
Chad Fowler
2006-Feb-07 15:41 UTC
[Rails] ActionMailer - ROR Recipes - Multipart/alternative
On 2/6/06, softwareengineer 99 <softwareengineer99@yahoo.com> wrote:> > I am using the SaltedHashLoginGenerator. and would like to send the e-mail > in multipart/alternative format. > > By default my application is using forgot_password_en.rhtml template. > > I read in the ROR Recipes book > > "ActionMailer sees these templates, recognizes the pattern in their > file names, and automatically sets the MIME type of the message to > multipart/alternative and adds each rendered view with the content type > in its file name." > > So I created forgot_password_en.text.plain.rhtml template and > forgot_password_en.text.html.rhtml templates (and removed the > forgot_password_en.rhtml template temporarily). > > Now my application won''t send any email. > > How can I make ActionMailer recognize these templates and set the > appropriate MIMe type? > > > My mailer function looks like this: > > def forgot_password(member, url=nil) > setup_email(member) > > # Email header info > @subject += "Forgotten password notification" > > # Email body substitutions > @body["name"] = "#{member.firstname} #{member.lastname}" > @body["login"] = member.login > @body["url"] = url || MemberSystem::CONFIG[:app_url].to_s > @body["app_name"] = MemberSystem::CONFIG[:app_name].to_s > endHi Frank. Would this work if your templates weren''t called "_en"? I believe ActionMailer requires the template to be named _exactly_ the same as the mailer''s method (forgot_password) with the remaining dot-separated parts of the name representing the mime type and template type (eg .rhtml). So if you rename your templates to, for example, forgot_password.text.plain.rhtml does your mailer start working again? -- Chad Fowler http://chadfowler.com http://pragmaticprogrammer.com/titles/fr_rr/ (Rails Recipes - In Beta!) http://pragmaticprogrammer.com/titles/mjwti/ (My Job Went to India, and All I Got Was This Lousy Book) http://rubycentral.org http://rubygarden.org http://rubygems.rubyforge.org (over one million gems served!) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://wrath.rubyonrails.org/pipermail/rails/attachments/20060207/0aa35165/attachment.html
softwareengineer 99
2006-Feb-07 16:19 UTC
[Rails] ActionMailer - ROR Recipes - Multipart/alternative
Hello Chad, Thank you for your reply. I will certainly follow your tip and post the results here. It sounds like it should work, but I will let you know. Thanks Frank Chad Fowler <chadfowler@gmail.com> wrote: Hi Frank. Would this work if your templates weren''t called "_en"? I believe ActionMailer requires the template to be named _exactly_ the same as the mailer''s method (forgot_password) with the remaining dot-separated parts of the name representing the mime type and template type (eg .rhtml). So if you rename your templates to, for example, forgot_password.text.plain.rhtml does your mailer start working again? -- Chad Fowler http://chadfowler.com http://pragmaticprogrammer.com/titles/fr_rr/ (Rails Recipes - In Beta!) http://pragmaticprogrammer.com/titles/mjwti/ (My Job Went to India, and All I Got Was This Lousy Book) http://rubycentral.org http://rubygarden.org http://rubygems.rubyforge.org (over one million gems served!) _______________________________________________ Rails mailing list Rails@lists.rubyonrails.org http://lists.rubyonrails.org/mailman/listinfo/rails --------------------------------- Relax. Yahoo! Mail virus scanning helps detect nasty viruses! -------------- next part -------------- An HTML attachment was scrubbed... URL: http://wrath.rubyonrails.org/pipermail/rails/attachments/20060207/1e1eacc0/attachment.html
Ben Munat
2006-Feb-07 18:10 UTC
[Rails] ActionMailer - ROR Recipes - Multipart/alternative
Chad Fowler wrote:> Would this work if your templates weren''t called "_en"? I believe > ActionMailer requires the template to be named _exactly_ the same as the > mailer''s method (forgot_password) with the remaining dot-separated parts > of the name representing the mime type and template type (eg .rhtml). > > So if you rename your templates to, for example, > forgot_password.text.plain.rhtml does your mailer start working again? >I used SHLG and it generated a "forgot_password" method in my MemberNotify ActionMailer subclass and a "forgot_password_en.html" view. That all appears to work. Sorry I can''t offer any insight on why things aren''t working -- I''m still very new to all this -- but I thought I should point out that the "_en" isn''t breaking mine. I''m fairly certain that''s added by the Localization plugin. b
Chad Fowler
2006-Feb-07 18:22 UTC
[Rails] ActionMailer - ROR Recipes - Multipart/alternative
On 2/7/06, Ben Munat <bent@munat.com> wrote:> Chad Fowler wrote: > > Would this work if your templates weren''t called "_en"? I believe > > ActionMailer requires the template to be named _exactly_ the same as the > > mailer''s method (forgot_password) with the remaining dot-separated parts > > of the name representing the mime type and template type (eg .rhtml). > > > > So if you rename your templates to, for example, > > forgot_password.text.plain.rhtml does your mailer start working again? > > > > I used SHLG and it generated a "forgot_password" method in my MemberNotify ActionMailer > subclass and a "forgot_password_en.html" view. That all appears to work. > > Sorry I can''t offer any insight on why things aren''t working -- I''m still very new to all > this -- but I thought I should point out that the "_en" isn''t breaking mine. I''m fairly > certain that''s added by the Localization plugin.Yea, my bet is (I don''t know the localization plugin well) that the localization plugin overrides the view-finding logic in a way that doesn''t affect the hardcoded checks that happen in the ActionMailer code. It might be worth a patch to ActionMailer to make it more flexible if that''s the case (or maybe not). -- Chad Fowler http://chadfowler.com http://pragmaticprogrammer.com/titles/fr_rr/ (Rails Recipes - In Beta!) http://pragmaticprogrammer.com/titles/mjwti/ (My Job Went to India, and All I Got Was This Lousy Book) http://rubycentral.org http://rubygarden.org http://rubygems.rubyforge.org (over one million gems served!)
softwareengineer 99
2006-Feb-07 19:04 UTC
[Rails] ActionMailer - ROR Recipes - Multipart/alternative - How to make it work.
Dear Chad, Thank you for your assistance. I tried renaming as per your suggestion and tried resending email but the email delivery failed. Then I looked in the localization code and found the following code in lib/localization.rb which is responsible for adding the _en to the template name: # redefinition of ActionMail::Base#render_message, that adds locale suffix to # the template name ActionMailer::Base.module_eval <<-EOL private def render_message(method_name, body) initialize_template_class(body).render_file(method_name + "_#{CONFIG[:default_language]}") end EOL I commented the entire code out, restarted the server and tried again and voila!, it worked. My forgot password message arrived with content-type set to: multipart/alternative; boundary=mimepart_43e8db39b433c_1a4a..fdbaf1bcc3c9 Seeing how many folks are using SLHG, I highly recommend the addition of following tips as the addition of these will highly benefit your readers: 1. How to modify the above code to keep the localization but still be able to use multi-part messages. 2. How to specify a reply_to address for ActionMailer. (I still cannot figure it out) 3. How to specify content type of text/html without using multipart for SLHG (by using @content_type="text/html") The SLHG works great, though it does takes some time. I have finally integrated it and recommend that it be added to the recipes also. The documentation that comes with SLHG is pretty self explanatory but can be overwhelming. What editor did you use to compose the book? Docbook or something else? Thank you once again for your assistance and great tips. Frank Ruby Gemologist P.S. I recommend that all Ruby developers be officially called Ruby gemologists to stand out from the rest. Chad Fowler <chadfowler@gmail.com> wrote: On 2/7/06, Ben Munat wrote:> Chad Fowler wrote: > > Would this work if your templates weren''t called "_en"? I believe > > ActionMailer requires the template to be named _exactly_ the same as the > > mailer''s method (forgot_password) with the remaining dot-separated parts > > of the name representing the mime type and template type (eg .rhtml). > > > > So if you rename your templates to, for example, > > forgot_password.text.plain.rhtml does your mailer start working again? > > > > I used SHLG and it generated a "forgot_password" method in my MemberNotify ActionMailer > subclass and a "forgot_password_en.html" view. That all appears to work. > > Sorry I can''t offer any insight on why things aren''t working -- I''m still very new to all > this -- but I thought I should point out that the "_en" isn''t breaking mine. I''m fairly > certain that''s added by the Localization plugin.Yea, my bet is (I don''t know the localization plugin well) that the localization plugin overrides the view-finding logic in a way that doesn''t affect the hardcoded checks that happen in the ActionMailer code. It might be worth a patch to ActionMailer to make it more flexible if that''s the case (or maybe not). -- Chad Fowler http://chadfowler.com http://pragmaticprogrammer.com/titles/fr_rr/ (Rails Recipes - In Beta!) http://pragmaticprogrammer.com/titles/mjwti/ (My Job Went to India, and All I Got Was This Lousy Book) http://rubycentral.org http://rubygarden.org http://rubygems.rubyforge.org (over one million gems served!) _______________________________________________ Rails mailing list Rails@lists.rubyonrails.org http://lists.rubyonrails.org/mailman/listinfo/rails --------------------------------- Relax. Yahoo! Mail virus scanning helps detect nasty viruses! -------------- next part -------------- An HTML attachment was scrubbed... URL: http://wrath.rubyonrails.org/pipermail/rails/attachments/20060207/e36abd29/attachment-0001.html
Chad Fowler
2006-Feb-07 19:15 UTC
[Rails] ActionMailer - ROR Recipes - Multipart/alternative - How to make it work.
On 2/7/06, softwareengineer 99 <softwareengineer99@yahoo.com> wrote:> Dear Chad, > > Thank you for your assistance. > > I tried renaming as per your suggestion and tried resending email but the > email delivery failed. > > Then I looked in the localization code and found the following code in > lib/localization.rb which is responsible for adding the _en to the template > name: > > # redefinition of ActionMail::Base#render_message, that > adds locale suffix to > # the template name > ActionMailer::Base.module_eval <<-EOL > private > def render_message(method_name, body) > > initialize_template_class(body).render_file(method_name + > "_#{CONFIG[:default_language]}") > end > EOL > > I commented the entire code out, restarted the server and tried again and > voila!, it worked. >I''m not surprised. Thanks for posting your findings.> My forgot password message arrived with content-type set to: > > multipart/alternative; > boundary=mimepart_43e8db39b433c_1a4a..fdbaf1bcc3c9 > Seeing how many folks are using SLHG, I highly recommend the addition of > following tips as the addition of these will highly benefit your readers: > > 1. How to modify the above code to keep the localization but still be able > to use multi-part messages. > 2. How to specify a reply_to address for ActionMailer. (I still cannot > figure it out) > 3. How to specify content type of text/html without using multipart for > SLHG (by using @content_type="text/html") >Thanks for your suggestions.> The SLHG works great, though it does takes some time. I have finally > integrated it and recommend that it be added to the recipes also. The > documentation that comes with SLHG is pretty self explanatory but can be > overwhelming. > > What editor did you use to compose the book? Docbook or something else? >I''m using the Pragmatic Programmers'' proprietary (and absolutely amazing!) publishing system. All of the writing is done in XML.> Thank you once again for your assistance and great tips. >Thanks! -- Chad Fowler http://chadfowler.com http://pragmaticprogrammer.com/titles/fr_rr/ (Rails Recipes - In Beta!) http://pragmaticprogrammer.com/titles/mjwti/ (My Job Went to India, and All I Got Was This Lousy Book) http://rubycentral.org http://rubygarden.org http://rubygems.rubyforge.org (over one million gems served!)