RoR ActionMailer问题 - 无法同时发送纯文本和HTML电子邮件。

时间:2012-02-02 21:31:59

标签: html ruby-on-rails email actionmailer plaintext

我的Rails应用程序出现问题 - 我在发送电子邮件的HTML和纯文本时遇到问题。注意:电子邮件确实发送;但是,它的样式没有正确...有一个链接到下面的结果。

建议在任何地方,如果你想发送HTML,你也应该发送一个纯文本备选方案。不幸的是,似乎我做错了,因为我的应用程序不允许我发送HTML和纯文本,而HTML看起来并不奇怪。

这是我的邮件模型:

class ProjectMembersMailer < ActionMailer::Base

  def membership_invitation(membership)
    @project = membership.project
    @user    = membership.user

    mail( :subject => %(Invitation to join project #{@project.business_name}),
          :from    => %("App" <no-reply@appname.com>),
          :to      => @user.account.email,
          :content_type => "text/html" ) do |format|
        format.html
        format.text
      end
  end

end

我的project_member_mailer视图有两个文件:membership_invitation.html.hamlmembership_invitation.text.erb(请注意第二个文件正在使用.erb,但即使我将其转换为.haml扩展名以保持一致性,我也会得到相同的文件误差)

以下是我尝试使用上面的代码发送输出时的输出图片。请注意,我删除了一些文字。 screen

基本上它看起来像是在文件的html版本之上发送文本版本。是否有另一种方法可以在不发生这种情况的情况下发送纯文本和HTML电子邮件?或者我错过了什么 - 比如,这些电子邮件是否应该同时发送?任何帮助将不胜感激。非常感谢您的时间和帮助!

2 个答案:

答案 0 :(得分:0)

根据Action Mailer Rails Guide,您不需要使用“格式”方法,也应删除“content-type”参数。

邮件会自动检测到有html和文本模板,并会自动将电子邮件创建为multipart / alternative

试试吧:

 mail( :subject => %(Invitation to join project #{@project.business_name}),
      :from    => %("App" <no-reply@appname.com>),
      :to      => @user.account.email)

答案 1 :(得分:0)

我遇到了完全相同的问题,只需要一件简单的事就可以修复它。将format.text放在format.html

def membership_invitation(membership)
@project = membership.project
@user    = membership.user

mail( :subject => %(Invitation to join project #{@project.business_name}),
      :from    => %("App" <no-reply@appname.com>),
      :to      => @user.account.email,
      :content_type => "text/html" ) do |format|
    format.text
    format.html
  end
end