1

Outlook にインポートしたい電子メール ファイルでいっぱいのディレクトリがあります。

これらのファイルは、私の知る限り、RFC822 形式である必要があります。それらを Notepad++ で開くと、次の平文が表示されます

Return-Path: XXX
Received: XXX
Authentication-Results: XXX
X-Message-Status: XXX
X-SID-PRA: XXX
X-SID-Result: XXX
X-AUTH-Result: XXX
X-Message-Delivery: XXX
X-Message-Info: XXXX
Received: from XXX
Received: from XXX
DomainKey-Signature: XXX

だから私は彼らが普通の古い形式であると思います。ここで、インデックスを作成して検索可能にするために、それらを PST ファイルにインポートしたいと思います。Outlook Interop についての知識はほとんどありません。

無題のファイルの名前を変更する.emlと、Outlook 2010 で開くことができます。それらを Outlook ウィンドウにドラッグすると、半分は機能します。メールはプレビューされませんが、ダブルクリックできます。すべての電子メールがインポートされるわけではなく (3000 件以上のメッセージについて話している)、Outlook は破損したファイルを無視しないため、すべてまたはまったくインポートされません。

Outlook の相互運用性を調べていました。

基本的な考え方は次のとおりです。テキスト ファイルごとに、それを電子メールとして特定のフォルダーにインポートします。

次のコードを書き込もうとしましたが、まだテストしていません

Application outlook = GetApplicationObject();

outlook.Session.AddStore(pstPath);

Store theStore = outlook.Session.Stores.Cast<Store>().FirstOrDefault(store => store.FilePath == pstPath);

if (theStore == null) throw new Exception();

try
{
    string[] files = Directory.GetFiles(dataDirectory, "*", SearchOption.AllDirectories);

    Folder folder = (Folder)theStore.GetRootFolder();

    foreach (string file in files.Where(file => file.EndsWith(".eml")))
    {
        //What?


    }
}
finally
{
    //Dispose??
}

GetApplicationObject別のSO回答からどこにコピーされますか。

質問:MailItemファイルの内容に基づいて を作成することは可能ですか? それとも、メール リーダーを使用してから、フィールドごとに MailItem を作成する必要がありますか? 次のように書いていました...

IMail mail = builder.CreateFromEmlFile(file);

MailItem outlookMail = outlook.CreateItem(OlItemType.olMailItem);
outlookMail.Body = mail.GetBodyAsText();
outlookMail.CC = string.Join("; ", mail.Cc.Select(x => x.Render()));
outlookMail.HTMLBody = mail.GetBodyAsHtml();

if (MimeImportance.High.Equals(mail.Importance))
    outlookMail.Importance = OlImportance.olImportanceHigh;
else if (MimeImportance.Low.Equals(mail.Importance))
    outlookMail.Importance = OlImportance.olImportanceLow;
else
    outlookMail.Importance = OlImportance.olImportanceNormal;

outlookMail.Sender=outlook.CreateItem()

私が試しているライブラリはhttp://www.limilabs.com/mailからのものです

4

1 に答える 1