OutLook模型中提供的对象有哪些?
Outlook对象模型中提供的对象是我们编写外接程序与Outlook应用交互的桥梁。Outlook 对象模型提供表示用户界面中各项的类和接口。例如,Application对象表示整个应用程序,MAPIFolder对象表示包含电子邮件或其他项的文件夹,MailItem对象表示电子邮件。OutLook模型中提供的对象有哪些?我为您道来。
Application对象
表示Outlook 应用程序,它是 Outlook 对象模型中最高级的对象。此对象包含很多重要的属性和方法,比如,创建一个邮件对象以便发送,CreateItem方法可以办到。
MAPIFolder对象
表示包含电子邮件、联系人、任务及其他项的文件夹。 Outlook 提供 16 个默认MAPIFolder对象。默认MAPIFolder对象由OlDefaultFolders枚举值定义。
例如,Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox与 Outlook 中的“收件箱”文件夹相对应。
MailItem对象
表示电子邮件。MailItem对象通常在“收件箱”、“已发送邮件”和“发件箱”等文件夹中。MailItem公开可用于创建和发送电子邮件的属性和方法。
l 可能会遇到的典型问题
如何发送一封简单邮件?
// 创建Outlook App
ApplicationClass outlookApp = newMicrosoft.Office.Interop.Outlook.ApplicationClass;
// 创建邮件对象
MailItemmail = outlookApp.CreateItem;
// 设置权限:不可转发
mail.Permission = OlPermission.olDoNotForward;
// 是否要求送达回执
mail.OriginatorDeliveryReportRequested = true;
// 设置邮件过期时间
mail.ExpiryTime = DateTime.Now.AddMinutes;
// 设置邮件接收方
mail.To = record.ToAccount;
// 设置邮件主题
mail.Subject = record.Subject;
// 设置邮件内容格式,html、文本
mail.BodyFormat = OlBodyFormat.olFormatHTML;
// 设置邮件文本内容,html格式应该给HTMLBody属性赋值
mail.HTMLBody = record.Content;
// 发送邮件
Microsoft.Office.Interop.Outlook._MailItem mailItem = mail;
mailItem.Send;
如何发送一封带图片的邮件
// 创建邮件对象
MailItemmail= outlookApp.CreateItem;
// 获取图片附件,并添加到邮件对象
string headImage = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "Image/head.png";
mail.Attachments.Add;
如何根据指定邮件地址获取Outlook账户对象,并用该账户发送邮件
///
///根据邮件地址获取Outlook账户对象
///
///邮件地址
///返回Outlook账户
publicstatic Microsoft.Office.Interop.Outlook.Account GetAccountForEmailAddress
{
ApplicationClass application = new Microsoft.Office.Interop.Outlook.ApplicationClass;
Microsoft.Office.Interop.Outlook.Accounts accounts = application.Session.Accounts;
foreach
{
if
{
return account;
}
}
returnnull;
}
// 获取指定Outlook账户
Microsoft.Office.Interop.Outlook.Account account = GetAccountForEmailAddress;
// 创建邮件对象
MailItem mail = outlookApp.CreateItem;
if
{
// 邮件发送账户
mail.SendUsingAccount = account;
}
如何获取指定账户的收/发件箱等
// 获取指定Outlook账户
Microsoft.Office.Interop.Outlook.Account account = GetAccountForEmailAddress;
// 收件箱文件夹
MAPIFolder inbox = null;
if
{
// 指定账户的收件箱文件夹
inbox = account.DeliveryStore.GetDefaultFolder;
}
// 甚至你可以按文件夹名称直接查询到Outlook对应的Folder对象
Folder targetFolder = account.Session.Folders.Cast.ToList.Find);
if
{
// 取到该文件对象下边的收件箱,或子文件夹
inBox = targetFolder.Store.GetDefaultFolder;
}
注:DeliveryStore在Microsoft.Office.Interop.Outlook14.0.0.0版本中新增,标示指定账户的默认存储区。
如何获取到邮件的回执
// 获取指定Outlook账户
Microsoft.Office.Interop.Outlook.Account account = GetAccountForEmailAddress;
// 收件箱文件夹
MAPIFolder inbox = null;
if
{
// 指定账户的收件箱文件夹
inbox = account.DeliveryStore.GetDefaultFolder;
}
if
{
// 遍历收件箱
foreach
{
if != null)
{
// 处理普通邮件
}
if != null)
{
// 处理回执邮件
}
// ... ...
}
}