Message.body пуст в ActionMailer Observer

Я использую Observer для регистрации исходящих писем; он срабатывает правильно, но когда я пытаюсь извлечь тело письма, я получаю пустую строку. Электронные письма определенно не пусты, и запись в журнале определенно создана. Установка точки останова и проверка message.body подтверждает, что это пустая строка.

class MailObserver
  def self.delivered_email(message)
    for address in message.to
      user = User.find_by_email(address)
      if user
        UserMailerLogging.create!(user_id: user.id, email_type: message.subject, 
                                  contents: message.body, sent_at: Time.now)
      end
    end
  end
end

ActionMailer::Base.register_observer(MailObserver)

person Jack R-G    schedule 06.03.2013    source источник


Ответы (1)


В Rails 3 электронные письма создаются и отправляются с помощью гема Mail. Согласно их документам

message.text_part # plaintext version
message.html_part # html version

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

message.text_part.body.decoded

Этот вопрос здесь, на SO, также может быть полезным.

person deefour    schedule 06.03.2013