4

email_archive という電子メールのデータベース テーブルがあります。このテーブルには、body と呼ばれるフィールドと raw_headers と呼ばれる別のフィールドが含まれています。C# を使用して (SharePoint Web パーツで) このテーブルの内容を画面に表示したいと考えています。メッセージの一部をウィンドウに返すことができるように、本文を解析できるライブラリを見つけようとしています。Limilabs のライブラリを試し、他のライブラリをいくつかダウンロードしました。ただし、すべてが最小限の EML 形式の電子メールを必要とするようです。

最新の試みは、MailUtiliesを使用しようとしていました。

MimeMessage mm = new MimeMessage(header + message);

しかし、フォーマットが MimeMessage の整合性チェックに合格していないように見えるため、これは失敗しています。

生のヘッダーと本文のコンテンツを使用して、電子メールをその構成要素に解析する方法を知っている人はいますか?

ヘッダーはこんな感じ

MIME-Version: 1.0
Received: from server.domain.com (10.20.205.104) by
 mail.domain.com (xx.xx.xx.xx) with Microsoft SMTP Server id
 8.1.436.0; Mon, 16 Sep 2013 14:33:54 -0700
Received: from server (localhost.localdomain [127.0.0.1])   by
 server.domain.com (8.13.8/8.13.8) with ESMTP id r8GLX4vm007046 for
 <myaddress@domain.com>; Mon, 16 Sep 2013 14:33:04 -0700
From: "service@domain.com" <service@domain.com>
To: My Name <myaddress@domain.com>
Date: Mon, 16 Sep 2013 14:33:04 -0700
Subject: Some Topic
Thread-Topic: Some Topic
Thread-Index: Ac6zJHFgOvb7ZAdeTJC8DzqnAvdnOw==
Message-ID: <153372.442207427-sendEmail@gserver>
Reply-To: "service@domain.com" <service@domain.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Exchange-Organization-AuthAs: Internal
X-MS-Exchange-Organization-AuthMechanism: 10
X-MS-Exchange-Organization-AuthSource: mail.domain.com
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
Content-Type: multipart/alternative;
    boundary="_000_153372442207427sendEmailgroundwork_"

そして、メッセージは次のようになります

--_000_153372442207427sendEmailgroundwork_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Some message to dispaly

--_000_153372442207427sendEmailgroundwork_
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html><head><style type=3D'text/css'> p,h1 { font-family: arial; } 
</style></head><body>
 <p>Some message to display</p>
 </body></html>


--_000_153372442207427sendEmailgroundwork_--
4

4 に答える 4

0

ヘッダーと本文がある場合、eml 全体を再作成するのは簡単です。

string eml = header + "\r\n\r\n" + body;  

MIME 形式のヘッダーと本文は、1 つの空行で区切られます。もう 1 つの回答では '\n' が使用されています。これは、MIME が行末として "\r\n" シーケンスを必要とするため、正しくありません。

ヘッダー文字列がすでに改行で終わっている場合は、改行を 1 つ追加するだけです ("\r\n")。

于 2013-12-05T13:38:24.847 に答える
0

\r\n\r\nヘッダーと本文を区切り文字で組み合わせる必要があります。次のコードは、次のことを示しています。

string msgContent = header.TrimEnd("\r\n") + "\r\n\r\n" + message;
byte[] bytes = Encoding.ASCII.GetBytes(msgContent);
ComponentPro.Net.Mail.MailMessage msg = new ComponentPro.Net.Mail.MailMessage(bytes);

//
// Access your parsed message here
//

コードはUltimate Mail ライブラリを使用します

于 2014-12-30T05:36:45.260 に答える