2013-09-25 17 views
3

如何提取郵件的正文,何時有內容配置?如何提取郵件的正文,何時有內容配置?

頭1

Accept-Language: en-US 
Content-Language: en-US 
X-MS-Has-Attach: yes 
X-MS-TNEF-Correlator: 
x-originating-ip: [x.x.x.x] 
Content-Type: application/pkcs7-mime; smime-type=signed-data; 
    name="smime.p7m" 
Content-Disposition: attachment; filename="smime.p7m" 
Content-Transfer-Encoding: base64 
MIME-Version: 1.0 

標題2:

Accept-Language: en-US 
    Content-Language: en-US 
    X-MS-Has-Attach: 
    X-MS-TNEF-Correlator: 
    x-originating-ip: [x.x.x.x] 
    Content-Type: multipart/alternative; 
     boundary="_000_A61C9CD725DF1C4FA94C13EC538A38BEEaz18ex3004_" 
    MIME-Version: 1.0 

當我簽署的郵件和發送郵件的標題是格式「頭1」,當我發送的郵件,不簽名,郵件的標題格式爲「header2」..

我目前使用" getMessageBody()" method來自mimemailparser.class.php文件來提取郵件正文。

上簽名的郵件,我不能夠檢索郵件的正文,它是在使用"getmessagebody()" method返回空體,但就未簽名的郵件是能夠檢索郵件的正文..

在檢查簽名和未簽名的郵件標題,有什麼區別,郵件正文怎樣才能在簽名郵件(header1)上提取?

+0

你可以發佈一個鏈接到您正在使用的類的源? – Cypher

+0

@Cypher我正在使用這個庫函數「https://code.google.com/p/php-mime-mail-parser/」 – thuk

回答

0

看看在類中的方法getMessageBody(),在下面的代碼部分:

foreach($this->parts as $part) { 
    if ($this->getPartContentType($part) == $mime_types[$type]) { 
    $headers = $this->getPartHeaders($part); 
    $body = $this->decode($this->getPartBody($part), array_key_exists('content-transfer-encoding', $headers) ? $headers['content-transfer-encoding'] : ''); 
    break; 
    } 
} 

類分裂MIME消息分成部分並且可能存在的情況下,當主體被分成幾個部分,但代碼只解碼第一部分(在你的情況下它可能是空的)。 嘗試修改這個代碼:

foreach ($this->parts as $part) { 
    if ($this->getPartContentType($part) == $mime_types[$type]) { 
    $headers = $this->getPartHeaders($part); 
    $body .= $this->decode($this->getPartBody($part), array_key_exists('content-transfer-encoding', $headers) ? $headers['content-transfer-encoding'] : ''); 
    } 
} 
+0

我檢查過這個。該代碼已經在建議的格式沒有中斷.. – thuk

相關問題