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






4.07/5 (9投票s)
用于打开 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
类的 Attachments
的 Add
方法有 4 个参数
- 第一个参数:要附加的文件路径。
- 第二个参数:附件类型,默认情况下我们应该使用
embedItem
来获取附件,它还有其他值,例如ByValue
和ByReference
,你可以参考 MSDN 了解更多信息。 - 第三个参数是希望附件添加的顺序,1 表示第一个附件,2 表示第二个附件,依此类推。
- 第四个参数是我们希望赋予附件的显示名称,如果你想要文件名,可以使用
FileInfo
类的FileInfo.Name
方法来实现。
关注点
通过在 Application
接口的 CreateItem
方法中使用不同的 OlItemTypes
参数,我们可以创建日历邀请、任务笔记等。只需使用 OlItemTypes.olCalendar
或 OlItemTypes.Notes
等。
历史
- 2009 年 12 月 11 日:初始发布
这是我在 The Code Project 上的第一篇帖子。感谢这个网站在许多需要帮助的时候提供的支持。