2010-02-17 3 views
1

전자 메일 메시지를 구문 분석 할 라이브러리가 있습니까? 나는 많다는 것을 알고있다. 구문 분석하고 나에게 메시지의 원래 보낸 사람에게 : 메일이 전달 된 메시지 인 경우전자 메일 메시지를 구문 분석하고 다양한 정보를 처리하는 방법

  1. : 기본 MIME 구문 분석뿐만 아니라이 같은 일을 구문 분석 할 수 있어야한다.
  2. 따옴표로 묶어야하는 부분을 가져옵니다. "- 쇼 인용 텍스트 -"나는 Gmail의 쇼 같은 의미

그것은 이들 중 하나를 지원해야한다 : C는/C++, PHP, 파이썬

답변

1

당신은, 아마, Spam Assassin에 대한 몇 가지 코드를 찾을 수 있습니다. PHP에서

여기
1

내 간단한 예 :

<?php 
$str = file_get_contents('mime-mixed-related-alternative.eml'); 

preg_match_all('/((?<=(Content-Type: multipart\/mixed; boundary="))(.*)?(?=(")))|((?<=(Content-Type: multipart\/related; boundary="))(.*)?(?=(")))|((?<=(Content-Type: multipart\/alternative; boundary="))(.*)?(?=(")))/', $str, $boundary); 

echo "<pre>"; 
// print_r($boundary); 

$AllPartsUnique = ""; 
$j=0; 

foreach ($boundary[0] as $key => $v) { 
    if($key >= 0){ 
    echo "\n\n\nBoundary " . $v . "\r\n"; 

    // cut boundary content 
    preg_match_all('/(?<=(--'.$v.'))(| |.*|[\s\S]+|\<|\>|\.|\r|\n|\0|@|\w+)?(?=(--'.$v.'--))/', $str, $part); 

    $bname = $v; 

    foreach ($part[0] as $v) { 
     // echo "PART " . $bname . " " . $v . "\r\n"; 
     $parts = explode("--".$bname, $v); 

     echo "<pre>"; 
     foreach ($parts as $v) { 
      // echo "\r\nSINGLE PART " . $v . "\r\n";  
      // $AllPartsUnique[$j] = $v; 
      // with html visible on page 
      $AllPartsUnique[$j] = htmlentities($v);  
      $j++; 
     } 
    } 
    } 
} 
echo "<pre>"; 
// print_r($AllPartsUnique); 



foreach($AllPartsUnique as $key => $one) { 
    foreach ($boundary[0] as $find) { 
    if(strpos($one, $find) !== false){ 
     unset($AllPartsUnique[$key]); 
    } 
    }  
} 

echo "<pre>"; 
print_r($AllPartsUnique); 
preg_match_all('/(?<=((\n)To:)|(^To:))(.*)+?(?=())/', $str, $to); 
echo "To " . $to[0][0]; 

preg_match_all('/(?<=((\n)From:)|(^From:))(.*)+?(?=())/', $str, $from); 
echo "From " . $from[0][0]; 

preg_match_all('/(?<=((\n)Subject:)|(^Subject:))(.*)+?(?=())/', $str, $subject); 
echo "Subject " . $subject[0][0]; 

// end script 
die(); 
?> 

AMD 여기 MIME 메시지의 예 :

From: [email protected] 
To: [email protected] 
Subject: Example Email 
MIME-Version: 1.0 
Content-Type: multipart/mixed; boundary="MixedBoundaryString" 

--MixedBoundaryString 
Content-Type: multipart/related; boundary="RelatedBoundaryString" 

--RelatedBoundaryString 
Content-Type: multipart/alternative; boundary="AlternativeBoundaryString" 

--AlternativeBoundaryString 
Content-Type: text/plain;charset="utf-8" 
Content-Transfer-Encoding: quoted-printable 

This is the plain text part of the email. 

--AlternativeBoundaryString 
Content-Type: text/html;charset="utf-8" 
Content-Transfer-Encoding: quoted-printable 

<html> 
    <body>=0D 
    <img src=3D=22cid:masthead.png=40email.coc=22 width 800 height=3D80= 
=5C>=0D 
    <p>This is the html part of the email.</p>=0D 
    <img src=3D=22cid:logo.png=40email.coc=22 width 200 height=3D60 =5C= 
>=0D 
    </body>=0D 
</html>=0D 

--AlternativeBoundaryString-- 

--RelatedBoundaryString 
Content-Type: image/jpgeg;name="logo.png" 
Content-Transfer-Encoding: base64 
Content-Disposition: inline;filename="logo.png" 
Content-ID: <[email protected]> 

amtsb2hiaXVvbHJueXZzNXQ2XHVmdGd5d2VoYmFmaGpremxidTh2b2hydHVqd255aHVpbnRyZnhu 
dWkgb2l1b3NydGhpdXRvZ2hqdWlyb2h5dWd0aXJlaHN1aWhndXNpaHhidnVqZmtkeG5qaG5iZ3Vy 
a25qbW9nNXRwbF0nemVycHpvemlnc3k5aDZqcm9wdHo7amlodDhpOTA4N3U5Nnkwb2tqMm9sd3An 
LGZ2cDBbZWRzcm85eWo1Zmtsc2xrZ3g= 

--RelatedBoundaryString 
Content-Type: image/jpgeg;name="masthead.png" 
Content-Transfer-Encoding: base64 
Content-Disposition: inline;filename="masthead.png" 
Content-ID: <[email protected]> 

aXR4ZGh5Yjd1OHk3MzQ4eXFndzhpYW9wO2tibHB6c2tqOTgwNXE0aW9qYWJ6aXBqOTBpcjl2MC1t 
dGlmOTA0cW05dGkwbWk0OXQwYVttaXZvcnBhXGtsbGo7emt2c2pkZnI7Z2lwb2F1amdpNTh1NDlh 
eXN6dWdoeXhiNzhuZzdnaHQ3eW9zemlqb2FqZWt0cmZ1eXZnamhka3JmdDg3aXV2dWd5aGVidXdz 
dhyuhehe76YTGSFGA= 

--RelatedBoundaryString-- 

--MixedBoundaryString 
Content-Type: application/pdf;name="Invoice_1.pdf" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment;filename="Invoice_1.pdf" 

aGZqZGtsZ3poZHVpeWZoemd2dXNoamRibngganZodWpyYWRuIHVqO0hmSjtyRVVPIEZSO05SVURF 
SEx1aWhudWpoZ3h1XGh1c2loZWRma25kamlsXHpodXZpZmhkcnVsaGpnZmtsaGVqZ2xod2plZmdq 
a2psajY1ZWxqanNveHV5ZXJ3NTQzYXRnZnJhZXdhcmV0eXRia2xhanNueXVpNjRvNWllc3l1c2lw 
dWg4NTA0 

--MixedBoundaryString 
Content-Type: application/pdf;name="SpecialOffer.pdf" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment;filename="SpecialOffer.pdf" 

aXBvY21odWl0dnI1dWk4OXdzNHU5NTgwcDN3YTt1OTQwc3U4NTk1dTg0dTV5OGlncHE1dW4zOTgw 
cS0zNHU4NTk0eWI4OTcwdjg5MHE4cHV0O3BvYTt6dWI7dWlvenZ1em9pdW51dDlvdTg5YnE4N3Z3 
OTViOHk5cDV3dTh5bnB3dWZ2OHQ5dTh2cHVpO2p2Ymd1eTg5MGg3ajY4bjZ2ODl1ZGlvcjQ1amts 
dfnhgjdfihn= 

--MixedBoundaryString-- 
관련 문제