Разбор сообщений MIME - PullRequest
2 голосов
/ 25 июня 2009

Для моего нового проекта, в котором есть модуль электронной почты. Мне нужно показать всю информацию электронной почты на веб-сайте. Когда я звоню на сервер, я получаю данные MIME в кодировке base64. после применения метода декодирования base64 я получаю данные MIME следующим образом:

/ ********************* Начало данных MIME ********************** ************* /

From prashant.n@geodesic.com Tue Jun 23 12:01:02 2009
Date: Tue, 23 Jun 2009 12:01:02 +0530
From: Prashant R Naik <prashant.n@geodesic.com>
To: koushik.narayanan@geodesic.com
Subject: This is a test mail
Message-ID: <20090623063102.GA27080@picopeta.com>
Reply-To: Prashant R Naik <prashant.n@geodesic.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="ReaqsoxgOBHFXBhH"
Content-Disposition: inline
User-Agent: Mutt/1.5.18 (2008-05-17)
Status: RO
Content-Length: 1912
Lines: 52


--ReaqsoxgOBHFXBhH
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Test mail.
Initiated by prashant

Regards,
-- 
Prashant R Naik
Principal Technologist | Symbian & Web2.0
Geodesic Limited | www.geodesic.com
Tel: +91-80-66551000

--ReaqsoxgOBHFXBhH
Content-Type: image/gif
Content-Disposition: attachment; filename="trash.gif"
Content-Transfer-Encoding: base64

R0lGODlhEAAQANUoADJ8wTqU2DmR1TqV2DN9wTSBxTWFyTaGyTJ9wTWGyTaKzjmS1TOAxTuV
2DaFyTN8wDiN0jiO0jSAxTeKzjqS1DN8wTqR1TWFyjB4vTOBxTmO0TmS1DaKzTeJzTqV1zSA
xDJ8wDqS1TeKzTF4vDF4vTiO0f///zuX2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACgALAAA
AAAQABAAAAaDQNRpSCwWhcakcsk8mZ5Qpik5pUKvT2W1uDVWp+BiYNAImAZmz/lcDoQEFoFp
QTFtTPKFQLCAREolJiURJhCCJhqAJRMiIhwmjSYdJgqUjQoODgkJJgecBp0mBgYXBx8ZBQxY
UAUSDAUACLEPDwgEAAAEIBUEtygkIyMkwMMYw8EjKEEAOw==

--ReaqsoxgOBHFXBhH
Content-Type: image/jpeg
Content-Disposition: attachment; filename="bx.jpg"
Content-Transfer-Encoding: base64

/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAAR
CAAUAAoDAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAn/xAAYEAEAAwEAAAAAAAAA
AAAAAAAAGWen5//EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA
/9oADAMBAAIRAxEAPwCb4AJHym0Vp3PQJTaK07noJHgA/9k=

--ReaqsoxgOBHFXBhH
Content-Type: image/png
Content-Disposition: attachment; filename="day_bg.png"
Content-Transfer-Encoding: base64

iVBORw0KGgoAAAANSUhEUgAAAGQAAAApCAYAAADDJIzmAAAABmJLR0QA/wD/AP+gvaeTAAAA
CXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AwCCS0kTriU2QAAAB10RVh0Q29tbWVudABD
cmVhdGVkIHdpdGggVGhlIEdJTVDvZCVuAAAAXElEQVR42u3bQQEAMAgDMZiqiZtP5AwbfeQk
NO/WvPtLMR0TABEQIAICRECACAgQAREQIAICRECACAgQAREQIAICRECACAgQAREQIAICRECA
CAgQARGQ7NpPPasFT+0FZPjBRwYAAAAASUVORK5CYII=

--ReaqsoxgOBHFXBhH--

/ ********************* конец Mime данных ********************** ************* /

Теперь проблема в том, что мне нужно проанализировать эти данные и использовать их в моем приложении. Так как эти данные не являются XML-файлами, их сложно проанализировать (потому что анализ с помощью какого-либо тега прост). Анализ данных MIME помогает be.im использовать erlang для анализа этих данных.

Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 25 июня 2009

gen_smtp и erlang_smtp содержат код для анализа сообщений MIME.

2 голосов
/ 27 июня 2009

Ах, прости ... ОК. Тогда, в духе Голлума и игры в загадки, я могу предложить только «рыскать или ничего», что не очень справедливо, потому что в действительности это две догадки.

http://yaws.hyber.org/yapp_intro.yaws

Тем не менее, развернуть свой собственный анализатор пантомимы не очень сложно. Получите «Границу» и разбейте сообщение на строки, соответствующие «-». Затем для каждого куска разбирайте заголовки, пока не дойдете до CRLF, CRLF. Тогда ваш контент начинается.

Я знаю, что ответы, в которых говорится "используйте другой язык", как правило, бесполезны. Я предполагаю, что вы не выбрали Erlang в качестве «языка, который облегчит эту работу», поэтому я предполагаю, что есть внешнее ограничение. Не могли бы вы рассказать, почему Erlang является вашим предпочтительным языком решений? :)

...