Проблема с RoR ActionMailer - невозможно отправить текстовые и HTML-письма одновременно. - PullRequest
2 голосов
/ 03 февраля 2012

У меня проблема с приложением Rails - у меня проблемы с отправкой как электронной, так и текстовой версии моего письма.ПРИМЕЧАНИЕ: электронная почта отправляет;однако, это не в стиле правильно ... есть ссылка на результаты ниже.

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

вот моя модель почтовой программы:

class ProjectMembersMailer < ActionMailer::Base

  def membership_invitation(membership)
    @project = membership.project
    @user    = membership.user

    mail( :subject => %(Invitation to join project #{@project.business_name}),
          :from    => %("App" <no-reply@appname.com>),
          :to      => @user.account.email,
          :content_type => "text/html" ) do |format|
        format.html
        format.text
      end
  end

end

В моих представлениях project_member_mailer есть два файла: membership_invitation.html.haml и membership_invitation.text.erb (обратите внимание, что второй файл использует .erb, но даже еслиЯ преобразовываю его в расширение .haml для обеспечения согласованности. Я получаю ту же ошибку)

Вот изображение, на котором выглядит вывод, когда я пытаюсь отправить его, используя приведенный выше код.Обратите внимание, что я удалил часть текста.screen

По сути, похоже, что он отправляет текстовую версию над HTML-версией файла.Есть ли альтернативный способ отправки как текстовых, так и HTML-писем без этого?Или я что-то упустил - например, не следует ли отправлять эти электронные письма одновременно?Любая помощь будет принята с благодарностью.Большое вам спасибо за ваше время и помощь!

Ответы [ 2 ]

0 голосов
/ 08 октября 2014

У меня была точно такая же проблема, и это можно исправить с помощью одной простой вещи.Поместите format.text поверх format.html

def membership_invitation(membership)
@project = membership.project
@user    = membership.user

mail( :subject => %(Invitation to join project #{@project.business_name}),
      :from    => %("App" <no-reply@appname.com>),
      :to      => @user.account.email,
      :content_type => "text/html" ) do |format|
    format.text
    format.html
  end
end
0 голосов
/ 05 сентября 2012

Согласно Action Mailer Rails Guide вам не нужно использовать метод "format", и вам также следует удалить параметр "content-type".

Почта автоматически обнаружит наличие html и текстовых шаблонов и автоматически создаст письмо как multipart / alternative

Просто попробуйте:

 mail( :subject => %(Invitation to join project #{@project.business_name}),
      :from    => %("App" <no-reply@appname.com>),
      :to      => @user.account.email)
...