我有一個目錄充滿了我想要導入Outlook的電子郵件文件。以編程方式導入Outlook中的電子郵件文件
這些文件應該是,AFAIK,採用RFC822格式。用記事本打開這些++顯示以下,更明文
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
有沒有這樣的事情「Outlook 2012」。有2010(PC),2011(Mac)和2013(PC)。你能否驗證你使用的版本? – Charles 2013-05-07 18:41:55
對不起。我的意思是Office 2010 – 2013-05-07 18:43:49