Получение и анализ MIME-почты из базы данных - PullRequest
0 голосов
/ 16 сентября 2009

Задание выполнено: электронное письмо хранится в байтах за один или несколько кусков (фиксированной длины) в базе данных. Это письмо должно быть получено из этой базы данных, и его содержимое должно быть отображено пользователю.

У меня нет проблем с оборачиванием устаревшей базы данных в модели ActiveRecord, конкатенацией сохраненных фрагментов и так далее. На самом деле я не знаю, с чего начать с разбора MIME. Я думал о чем-то вроде, возможно, наличия специального класса EMail, который я могу инициализировать данными, хранящимися в базе данных, и этот класс позволил бы мне увидеть, из каких частей MIME состоит почта, и позволил мне отобразить, например, части text/* этого.

Теперь кажется, что ActionMailer может анализировать входящие письма, но детализация получения писем выглядит, скорее, "разреженно", и в нем просто упоминается получение писем из STDIN.

Как я могу анализировать и отображать почту MIME (или ее части) в Rails, если я могу предоставить ее содержимое в виде одной строки, переменной, результата запроса или чего-то подобного?

Ответы [ 3 ]

0 голосов
/ 16 сентября 2009

Я сделал это неправильно. Rails поставляется с библиотекой TMail , которая отлично подходит для анализа сообщений MIME. Основной рабочий процесс так же прост, как объединение фрагментов из одного сохраненного сообщения и передача их в TMail::Mail.parse следующим образом:

email = TMail::Mail.parse(StoredMessage.find(:all,
  :conditions => ["mail_id = ?", "oyByGqacG73b"],
  :order => "chunk_ind").collect(&:mail_text).join)

email.body #=> this is your test body
email.subject # => test subject
email.has_attachment? #=> true
email.attachments.first.original_filename # => bulkfile

Я действительно извиняюсь за то, что пропустил целую библиотеку в Rails.

0 голосов
/ 30 ноября 2010

"has_attachment * S *?" (множественное число) - правильное название метода

0 голосов
/ 16 сентября 2009

Взгляните на MMS2R .

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

...