Rails HTML电子邮件显示HTML代码

Rails HTML电子邮件显示HTML代码,html,ruby-on-rails-3,email,actionmailer,Html,Ruby On Rails 3,Email,Actionmailer,我正在编写一封欢迎新用户的html电子邮件,但它不起作用。当我发送它时,它将html代码显示为文本,而不是呈现实际的html。我用Mailchimp的一个模板创建了我模板的html,所以我很惊讶它不起作用。另外,当我使用Putsmail.com和emailonacid.com发送电子邮件时,它看起来很好 但是,在生产过程中,电子邮件会发送,并且html在电子邮件中显示为文本,如下所示(来自registration_confirmation.html.erb): 从用户注册模型调用: Notifi

我正在编写一封欢迎新用户的html电子邮件,但它不起作用。当我发送它时,它将html代码显示为文本,而不是呈现实际的html。我用Mailchimp的一个模板创建了我模板的html,所以我很惊讶它不起作用。另外,当我使用Putsmail.com和emailonacid.com发送电子邮件时,它看起来很好

但是,在生产过程中,电子邮件会发送,并且html在电子邮件中显示为文本,如下所示(来自registration_confirmation.html.erb):

从用户注册模型调用:

Notifier.registration_confirmation(user).deliver

您似乎缺少以下内容类型:

def registration_confirmation(user)
  @user = user
  subject       "Welcome #{@user.first_name}!"
  from          "info@foobar.com"
  recipients    @user.email
  sent_on       Time.now

  # Set content-type header
  content_type "text/html"
end

它默认为
text/plain
,因此您必须为HTML或多部分消息显式设置它。

谢谢Michael!如果我想制作包含多个部分的电子邮件,因此我有文本和html版本,我可以使用相同的内容类型吗?我想在Notifier中为我的所有电子邮件设置它(并使它们都具有多部分)。@YellowReval请参阅多部分电子邮件的文档示例。您需要不同的内容类型,然后为每个mime部分(普通和html)调用
part
@MichaelBerkowski我正试图使用
mail(:body=>@body,subject:@subject,:to=>@recipients,:headers=>@headers,:content\u type=>“text/html”)调用我的方法
。。但它仍然在发送短信。。是这样写的吗?@abbood不清楚是哪个模块或库提供了
mail()
方法,因此指定附加头的过程可能不同,但由于您有一个
:headers=>@headers
键,我认为您需要将
内容类型
添加到
@headers
散列中,因为它必须成为消息中的标题。@MichaelBerkowski我使用的是
ActionMailer
。。所以它是rails的一部分。我看了一下,但它们是电子邮件标题(如收件人、发件人、主题等)。。与内容类型无关。。
Notifier.registration_confirmation(user).deliver
def registration_confirmation(user)
  @user = user
  subject       "Welcome #{@user.first_name}!"
  from          "info@foobar.com"
  recipients    @user.email
  sent_on       Time.now

  # Set content-type header
  content_type "text/html"
end