65.9K
CodeProject 正在变化。 阅读更多。
Home

在 Outlook 中附加文件并创建新邮件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.07/5 (9投票s)

2009 年 12 月 11 日

CPOL

2分钟阅读

viewsIcon

62242

downloadIcon

1489

用于打开 Outlook 中的“新建邮件”窗口并附加项目的代码

引言

我搜索了网络上许多可以打开简单的邮件界面并附加项目,并保持“新建消息”窗口准备执行的文章。几乎所有的文章都建议使用 MAPI 或一个简单的 mailto: 链接。现在,MAPI 存在内存泄漏,这使得它难以使用,而“mailto: ”并不总是适用于附件。

背景

因此,我对 Microsoft.Office.Interop.Outlook 命名空间进行了研究。互联网上的其他代码允许我们在 Outlook 打开时发送邮件,而在 Outlook 关闭时:大多数代码会抛出异常。因此,我开始使用相同命名空间中的 MailItem 类,并找到了一种解决方案来附加文件,并创建“新建消息”窗口,而无需实际运行 Outlook 或使用 MAPI。

Using the Code

该代码使用 Microsoft.Office.Interop.Outlook 组件。为了使该组件存在,我们的系统上必须安装 Outlook。然后,当我们转到解决方案资源管理器并访问引用节点,然后从上下文菜单中选择添加新引用时,我们将在“添加引用”窗口的 .NET 选项卡下访问此组件,如图所示

然后我们可以添加以下代码

using Outlook=Microsoft.Office.Interop.Outlook;    

Class ClassDisplayMail
{
    Public void DisplayOutlook()
    {
         Outlook.Application objApp =new Outlook.Applicaiton();
         Outlook.MailItem mail=null;
         mail=(Outlook.MailItem)objApp.CreateItem(Outlook.OlItemType.olMailItem);
         //The CreateItem method returns an object which has to be typecast to MailItem 
         //before using it.
         mail.Attachments.Add((object)@"C:\me.doc",
		Outlook.OlAttachmentType.olEmbeddeditem,
     1, (object)"Attachment");
    //The parameters are explained below
    mail.To="me@abc.com;test@def.com";
    mail.Cc="con@def.com";//All the mail lists have to be separated by the ';'
    }
}
//Then we can use either of the following: Add the following code after mail.Cc

//To send email:
mail.Send();
//To show email window
mail.Display();

MailItem 类的 AttachmentsAdd 方法有 4 个参数

  1. 第一个参数:要附加的文件路径。
  2. 第二个参数:附件类型,默认情况下我们应该使用 embedItem 来获取附件,它还有其他值,例如 ByValueByReference,你可以参考 MSDN 了解更多信息。
  3. 第三个参数是希望附件添加的顺序,1 表示第一个附件,2 表示第二个附件,依此类推。
  4. 第四个参数是我们希望赋予附件的显示名称,如果你想要文件名,可以使用 FileInfo 类的 FileInfo.Name 方法来实现。

关注点

通过在 Application 接口的 CreateItem 方法中使用不同的 OlItemTypes 参数,我们可以创建日历邀请、任务笔记等。只需使用 OlItemTypes.olCalendarOlItemTypes.Notes 等。

历史

  • 2009 年 12 月 11 日:初始发布

这是我在 The Code Project 上的第一篇帖子。感谢这个网站在许多需要帮助的时候提供的支持。 

© . All rights reserved.