我的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.haml
和membership_invitation.text.erb
(请注意第二个文件正在使用.erb,但即使我将其转换为.haml扩展名以保持一致性,我也会得到相同的文件误差)
以下是我尝试使用上面的代码发送输出时的输出图片。请注意,我删除了一些文字。
基本上它看起来像是在文件的html版本之上发送文本版本。是否有另一种方法可以在不发生这种情况的情况下发送纯文本和HTML电子邮件?或者我错过了什么 - 比如,这些电子邮件是否应该同时发送?任何帮助将不胜感激。非常感谢您的时间和帮助!
答案 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