Проблема с RoR ActionMailer: невозможно одновременно отправлять электронные письма в текстовом формате и в формате HTML.

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

Везде рекомендуется, чтобы, если вы хотите отправить 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" <[email protected]>),
          :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 для согласованности, я получаю ту же ошибку)

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

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


person slovak_100    schedule 02.02.2012    source источник
comment
Не устанавливайте тип контента явно - вам нужно позволить рельсам установить его как составной/смешанный   -  person Frederick Cheung    schedule 03.02.2012


Ответы (2)


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

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

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

 mail( :subject => %(Invitation to join project #{@project.business_name}),
      :from    => %("App" <[email protected]>),
      :to      => @user.account.email)
person Taryn East    schedule 05.09.2012

У меня была точно такая же проблема, и ее можно решить всего одной простой вещью. Поместите 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" <[email protected]>),
      :to      => @user.account.email,
      :content_type => "text/html" ) do |format|
    format.text
    format.html
  end
end
person verner_dz    schedule 08.10.2014