Rails 3 и разработка шаблонов почтовых программ - PullRequest
4 голосов
/ 25 января 2011

Я использую рельсы 3 и разрабатываю для аутентификации.

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

<p><a href=3D"http://localhost:3000/users/confirmation?confirmation_token=
=3D88uo7jetcetc">Confirma=
r mi cuenta</a></p>

Предыдущее 3d - это html escape и не должно быть там. Использование raw и html_safe не влияет на вывод.

Ответы [ 4 ]

4 голосов
/ 25 сентября 2013

Имейте в виду, что этот эффект иногда присутствует только в консоли и не присутствует при использовании в производственной среде и / или в реальных отправляемых электронных письмах. Это был случай для меня; он не коррелировал с неанглийскими символами, но создал вставки «3D» и «= 3D», отмеченные выше, после того как я изменил электронное письмо с подтверждением - но только в выводе на консоль - затрудняя тестирование.

Смотрите этот выпуск на Devise Github: http://github.com/plataformatec/devise/issues/2086 ... где это было отнесено к «проблеме Rails».

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

3 голосов
/ 25 января 2011

Хорошо, если кто-нибудь сталкивался с этим, вот как я решил это.

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

Например:

%p
    = "!Bienvenido, #{username}!"

%p
    Usted puede confirmar su cuenta a través del siguiente enlace:

%p
    = link_to 'Confirmar mi cuenta', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token.html_safe)

должно быть

%p
    = "&#161;Bienvenido, #{username}!"

%p
    Usted puede confirmar su cuenta a trav&eacute;s del siguiente enlace:

%p
    = link_to 'Confirmar mi cuenta', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token.html_safe)
0 голосов
/ 30 мая 2018

Я могу подтвердить, что получил сообщение электронной почты, подобное этому (с предшествующим 3D) в консоли , но не в реальном отправленном сообщении. Так что не нужно ничего убегать.

Однако для целей тестирования вы можете добавить следующий код для отображения электронной почты в консоли только в режиме разработки:

<% if Rails.env.development?  %>
    <% logger.debug confirmation_url(@resource, confirmation_token: @token) %>
<% end %>
0 голосов
/ 15 мая 2013

У меня тоже была эта проблема.html_safe работал, как только я использовал метод рельсов link_to.

Неверный код

%a{:href => "#{@redemption.link.html_safe}"}= "http://example.com/#{@redemption.model.email_hash}"

Хороший код

= link_to "http://example.com/#{@redemption.model.email_hash}", @redemption.link.html_safe
...