我正在尝试使用 Rails 3 和 Action Mailer 发送一封电子邮件。电子邮件发送得很好,但我希望它采用 HTML 格式,并带有一些基本样式,其中包括背景图像。我知道图像可能会被阻止,直到用户允许显示它们,但我仍然认为最好链接到我的网络服务器上的图像。
名为 Registration_confirmation.html.erb 的电子邮件模板如下所示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<style type="text/css">
body {
background: url(/images/mainbg_repeat.jpg) top repeat-x #cfcfcf;
margin: 0px 0px 0px 0px;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
color: #565656;
}
获取背景图像的 url 链接以包含完整主机以便背景显示在电子邮件中的最佳方法是什么?
在回复我的另一个答案时,@Kevin 写道:
感谢您的回答,我确实想过做类似的事情,但我
不认为以我的设置方式是可能的。邮寄者
调用发生在模型的 after_create 调用中,而不是在
控制器,所以我认为我无法像您一样访问请求对象
提到过(或者我错了)。我的邮件初始化程序中确实有这个:
ActionMailer::Base.default_url_options[:host] = "localhost:3000" 我可以吗
以某种方式在我的邮件程序中使用该 hos 参数使其工作?
答案是肯定的。所有 Rails url 构造助手都应该使用这些 defualt_url_options。除了设置:host
,您还应该通过设置此选项强制它使用绝对网址:
ActionMailer::Base.default_url_options[:only_path] = false
另外,设置资产主机如下:
config.action_mailer.asset_host = 'http://localhost:3000'
然后只需使用image_path
helper 而不是手写 url,如下所示:
<style type="text/css">
body {
background: url(<%= image_path('mainbg_repeat.jpg') %>) top repeat-x #cfcfcf;
}
</style>
注意:不建议直接设置default_url_options。这是新的方法:
config.action_mailer.default_url_options = {
:host => 'localhost:3000',
:only_path => false
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)