С помощью RoR ActionMailer отправляйте текстовые сообщения без использования файла представления

Для рендеринга текстового (не html) сообщения с помощью ActionMailer в Rails 3 я вижу много потоков, инструктирующих программиста создать файл .text.erb и запустить следующий код:

mail do |format|
  format.html
  format.text
end

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

Я использую следующий код:

mail do |format|
  format.html{ render( text: 'my text' ) }
  format.text{ render( text: 'my text' ) }
end

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


person JellicleCat    schedule 11.02.2013    source источник


Ответы (1)


Из документа:

Action Mailer будет автоматически отправлять составные электронные письма, если у вас есть разные шаблоны для одного и того же действия. Итак, для нашего примера UserMailer, если у вас есть welcome_email.text.erb и welcome_email.html.erb в app/views/user_mailer, Action Mailer автоматически отправит составное электронное письмо с HTML и текстовой версиями, настроенными как разные части.

Просто сделать:

mail do |format|
  format.text{ render( text: 'my text' ) }
end

Если вы хотите только текстовое письмо.

person apneadiving    schedule 11.02.2013
comment
Это выглядит идентично коду в исходном вопросе. Я что-то упускаю? - person Brandan; 11.02.2013
comment
+1 к Брэндану. @apneadiving, вы пробовали предложенный код? Когда я использую его, кажется, что он отправляет электронное письмо в формате html. - person JellicleCat; 11.02.2013
comment
извините, забыл удалить одну строку :) - person apneadiving; 12.02.2013
comment
Хорошо. +1 за рабочее решение. Но есть ли способ сделать это, не исключая опцию отправки электронного письма в формате html? т.е. разве нет элегантного способа, которым я мог бы использовать аргумент, чтобы сообщить функции mail, какой формат использовать? - person JellicleCat; 12.02.2013
comment
Прелесть рельсов в том, что они принимают существующие форматы, как объясняется в документе. Если у вас есть один, потребуется один, два, потребуется оба. Просто адаптируйте свои представления или встроенный код! - person apneadiving; 12.02.2013