2009-06-25 18 views
2

電子メールを持っている私の新しいプロジェクトのために、module.iはweb.when上のすべての電子メール情報を表示する必要があります。次のようにMIMEデータを取得BASE64復号技術イムを適用した後:MIMEメッセージを解析する

/********************* MIMEデータは********を開始します***************************/

From [email protected] Tue Jun 23 12:01:02 2009 
Date: Tue, 23 Jun 2009 12:01:02 +0530 
From: Prashant R Naik <[email protected]> 
To: [email protected] 
Subject: This is a test mail 
Message-ID: <[email protected]> 
Reply-To: Prashant R Naik <[email protected]> 
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データの終了*********************************/

今問題は、私はこのデータを解析し、私のapplication.sinceで使用する必要がありますので、このデータはXMLではないので、解析するのは難しいです(いくつかのタグを解析するのは簡単なので)。このデータを解析するためにerlangを使用してください。

はMIMEメッセージを解析するためのコードが含まれ、事前に

答えて

2

ああ、申し訳ありません。ゴラムと謎のゲームの精神の中で、私は本当に2つの推測であるため、あまり公平ではない「ヨーまたは何も」しか提供できません。

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

しかし、あなた自身のMIMEパーサを転がすことは非常に難しいことではありません。 "境界"を取得し、 " - "と一致する行でメッセージを分割します。次に、各チャンクに対して、CRLF、CRLFに到達するまで見出しを解析します。その後、コンテンツが開始されます。

「別の言語を使用する」という回答は、一般的に役に立たないことがわかります。私はあなたが「この仕事をより簡単にする言語」としてErlangを選んでいないと推測しているので、私は外部の制約があると推測しています。 Erlangがあなたの好みのソリューション言語である理由を分かち合いたいですか? :)

関連する問題