使用rails 2.3.14
我的电子邮件erb: data.html.erb:
<% @data.each do |error| %>
<table>
<% error.each_pair do |k, v| %>
<tr>
<td>
<%= k %>
</td>
<td>
<%= ap v %>
</td>
</tr>
<% end %>
</table>
<br />
<% end %>
我可以收到电子邮件,但是当我这样做时,它会显示为纯文本 - 而不是呈现HTML。
Action Mailer config:
config.action_mailer.raise_delivery_errors = true
# Send emails during development
config.action_mailer.perform_deliveries = true
ActionMailer::Base.delivery_method = :sendmail
更新:必须在我的投放方式中指定内容类型:
def data(data, sent_at = Time.now)
Time.zone = 'Eastern Time (US & Canada)'
content_type 'text/html'
subject "[#{RAILS_ENV}] An error has occurred - #{Time.now.to_s("%B %d, %Y")}"
recipients "bugs@mydomain.com"
from AppConfig['from_email']
sent_on sent_at
@body = {:data => data}
end
答案 0 :(得分:1)
在某些情况下,似乎rails可能以某种方式缓存文本模板。
我只是
克雷。
答案 1 :(得分:0)
使用&lt;%=原始k%&gt;或&lt;%= k.html_safe%&gt;
答案 2 :(得分:0)
来自d11wtq的comment:
将content_type
指定为text/html
:
ActionMailer::Base.mail(
content_type: "text/html",
from: "sender@example.com",
to: "your_email@example.com",
subject: "This is a test",
body: "<h2>HTML Email Test</h2><p>This is a <b>test</b>.</p>"
).deliver_now