2

オブザーバーを使用して送信メールを記録しています。正しく起動しますが、メールの本文を抽出しようとすると、空の文字列が表示されます。電子メールは間違いなく空白ではなく、ログ レコードは確実に作成されます。ブレークポイントと検査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)
4

1 に答える 1

3

Rails 3 では、メールはMail gem を使用して作成および送信されます。彼らのドキュメントによると

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

メールがマルチパートかどうかに応じて、もう少し先に進むこともできます。

message.text_part.body.decoded

ここのSOに関するこの質問も大変かもしれません。

于 2013-03-06T20:15:09.820 に答える