2007年3月14日 星期三

[C#] OutLook In C#


要怎麼在 C# 中操作 OutLook 呢? 雖然 C# 並沒有直接的提供收信的元件,但是我們仍然可以透過
OFFice 提供的 Outlook 元件來存取、操作 OutLook ,首先要把元件加入參考,如下圖所示:




我們會在參考中發現到多了一個 Outlook 的參考


現在我們就可以開始操作囉....







Outlook.Application Mailapp= new Outlook.ApplicationClass();
Outlook.NameSpace mailspace=Mailapp.GetNamespace("MAPI");
Outlook.MAPIFolder mfolder=mailspace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
mfolder.Items.Sort("[ReceivedTime]",false);
string MailSubject="";
long mailcount=mfolder.Items.Count;

for (int i=1;i<mailcount;i++)
{
object item = mfolder.Items[i];


Outlook.MailItem mi = item as Outlook.MailItem;
if(mi != null)
{

if (mi.Subject ==null)
{MailSubject="";}
else
{MailSubject=mi.Subject.ToString();}
textBox1.Text+=mi.ReceivedTime.ToString()+" - "+MailSubject+"\r\n";
if (MailSubject=="給王小明的主旨")
{
Outlook.Attachments ii=mi.Attachments;  //檢查有無附件
for (int x=1;x<=ii.Count;x++)
{
Outlook.Attachment aa=(Outlook.Attachment)ii[x];
aa.SaveAsFile(@"d:\"+aa.FileName);  //有的話就存檔
}



break;
}
}
}


// 取得Folder 的另一種方法
// foreach(object item in mfolder.Items)
// {
// Outlook.MailItem mi = item as Outlook.MailItem;
//
// if(mi != null)
// {
// if (mi.Subject ==null)
// {MailSubject="";}
// else
// {MailSubject=mi.Subject.ToString();}
//
// //textBox1.Text+=mi.ReceivedTime.ToString()+" - "+MailSubject+"\r\n";
// if (MailSubject=="給王小明的主旨")
// {
// Outlook.Attachments ii=mi.Attachments;
// for (int x=1;x<=ii.Count;x++)
// {
// Outlook.Attachment aa=(Outlook.Attachment)ii[x];
// aa.SaveAsFile(@"d:\"+aa.FileName);
// }
//
//
//
// break;
// }
//
//
//
//
// }


// }

mailspace.Logoff();
mfolder=null;
mailspace=null;
Mailapp =null;









以上和大家分享...


沒有留言: