详解Ruby on Rails中的mailer相关使用
把mails命名为SomethingMailer。没有Mailer字根的话,不能立即显现哪个是一个Mailer,以及哪个视图与它有关。
提供HTML与纯文本视图模版。
在你的开发环境启用信件失败发送错误。这些错误缺省是被停用的。
#config/environments/development.rb config.action_mailer.raise_delivery_errors=true
在开发模式使用smtp.gmail.com设置SMTP服务器(当然了,除非你自己有本地SMTP服务器)。
#config/environments/development.rb config.action_mailer.smtp_settings={ address:'smtp.gmail.com', #更多设置 }
提供缺省的配置给主机名。
#config/environments/development.rb config.action_mailer.default_url_options={host:"#{local_ip}:3000"} #config/environments/production.rb config.action_mailer.default_url_options={host:'your_site.com'} #在你的mailer类 default_url_options[:host]='your_site.com'
如果你需要在你的网站使用一个email链结,总是使用_url方法,而不是_path方法。_url方法包含了主机名,而_path方法没有。
#错误 Youcanalwaysfindmoreinfoaboutthiscourse =link_to'here',url_for(course_path(@course)) #正确 Youcanalwaysfindmoreinfoaboutthiscourse =link_to'here',url_for(course_url(@course))
正确地显示寄与收件人地址的格式。使用下列格式:
#在你的mailer类别 defaultfrom:'YourName<info@your_site.com>'
确定测试环境的email发送方法设置为test:
#config/environments/test.rb config.action_mailer.delivery_method=:test
开发与生产环境的发送方法应为smtp:
#config/environments/development.rb,config/environments/production.rb config.action_mailer.delivery_method=:smtp
当发送HTMLemail时,所有样式应为行内样式,由于某些用户有关于外部样式的问题。某种程度上这使得更难管理及造成代码重用。有两个相似的gem可以转换样式,以及将它们放在对应的html标签里:premailer-rails3和roadie。
应避免页面产生响应时寄送email。若多个email寄送时,造成了页面载入延迟,以及请求可能逾时。使用delayed_jobgem的帮助来克服在背景处理寄送email的问题。