2012-04-24 3 views
3

Использование рельсов 2.3.14Как отправить html-письмо с помощью ActionMailer?

мой электронный Еврорадио: 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.action_mailer.raise_delivery_errors = true 

# Send emails during development 
config.action_mailer.perform_deliveries = true 
ActionMailer::Base.delivery_method = :sendmail 

UPDATE: пришлось указать тип содержимого в моем методе доставки:

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 "[email protected]" 
    from  AppConfig['from_email'] 
    sent_on  sent_at 
    @body = {:data => data} 
    end 
+1

Если вы просматриваете источник письма в своем почтовом ящике, что отображается в заголовке Content-Type? – d11wtq

+0

текст/равнина; кодировка = UTF-8. Как сделать его html? – NullVoxPopuli

+0

Он должен «просто работать». Вы 100% у вас нет шаблона data.text.erb в каталоге? Вы вызываете какие-либо методы визуализации вручную внутри почтовой программы? – d11wtq

ответ

0

< использования% = сырец к%> или <% = k.html_safe %>

1

Кажется, что рельсы могут каким-то образом кэшировать текстовый шаблон при определенных обстоятельствах.

Я просто

  1. Сформирован новый почтовик с одной точки зрения, вид текста
  2. Испытано почтовую программу и послал текстовое сообщение
  3. переименовал текстовое сообщение электронной почты в формате HTML (foo.text.haml -> foo.html.haml)
  4. повторно почтовой программы ... и получил текст по электронной почте (BOO)
  5. Создал HTML версию наряду с текстовой версией с новым именем (bar.html.haml)
  6. Перезагрузите сервер
  7. Проверено (панель отправки). На этот раз получил HTML-адрес электронной почты.
  8. Уточненный исходный html-адрес электронной почты (foo). Получил HTML-адрес электронной почты

cray.

Смежные вопросы