最初に Microsoft.Office.Interop.Outlook への参照を追加し、次にこれらの using ステートメントを追加します
using Microsoft.Office.Interop.Outlook;
using _Application = Microsoft.Office.Interop.Outlook._Application;
using Outlook = Microsoft.Office.Interop.Outlook;
次に、これを追加します
//declare Outlook application
_Application objOutlook = new Outlook.Application(); //create it
_NameSpace objNs = objOutlook.Session; //create new session
MAPIFolder oPublicFolders = objNs.Folders["Public Folders"];
MAPIFolder oAllPublicFolders = oPublicFolders.Folders["All Public Folders"];
Items itms = oAllPublicFolders.Items;
foreach (MailItem item in itms)
{
GetNewMailItem(objOutlook, objContacts, item);
}
Marshal.ReleaseComObject(objOutlook); //release outlook com object
この次の部分はまさに私が行ったものです。必要に応じてこのコードをすべて変更してください。
private static void GetNewMailItem(_Application objOutlook, MAPIFolder objContacts, MailItem item)
{
if(item.ReceivedTime.Date == DateTime.Now.Date.AddDays(-1) || item.UnRead)
{
if (item.Attachments.Count > 0)
{
var attachments = item.Attachments;
foreach (Attachment attachment in attachments)
{
if(attachment.Type == OlAttachmentType.olEmbeddeditem)
{
ProcessEmbeddedEmailAttachment(attachment, objOutlook, objContacts);
}
else if (attachment.FileName.EndsWith(".doc") || attachment.FileName.EndsWith(".docx"))
{
ExtractAttachment(attachment);
item.UnRead = false;
}
}
}
}
}
私の処理に固有のものであるため、残りのコードは省略しています。