在 winfrom 中弹出outlook 并添加附件

这段时间在公司修改一个前辈们做过的测试工具:test client。需要在该工具中添加一个功能就是点击按钮是弹出outlook界面,并添加附件:刚开始的直接用

简单的方式实现的,现贴出分享如下:
microsoft.win32.registrykey rkey = microsoft.win32.registry.classesroot.opensubkey(@"mailto\shell\open\command");//这里我们查找系统的缺省邮件客户程式,其他的客户程式我没有试验过,不知道这种方式是否可行

if(rkey != null)
{//这里查找outlook应用程式所在位置,也能够用其他方式去查
string path = rkey.getvalue("").tostring() + " ";
path = path.substring(0, path.indexof(" "));
path = path.replace("\"", "");
rkey.close();
try
{
system.diagnostics.process.start(path, "-c ipm.note /m myfriend@hotmail.com&subject=hello " + this._imagepath);//调用执行outlook,主要注意后面的参数,附件的文档地址空格隔开
}
catch
{
}
}

但是这样打开outlook界面后只能添加一个附件而且非常不灵活!于是就用了另一种方法:

调用COM组建来完成对outlook的操作。

1.导入 Microsoft.Office.Interop.Outlook

2.代码如下:

    private void SendEmailtoContacts(List<string> AttachmentPath, string Subject)
       {
           try
           {
               Microsoft.Office.Interop.Outlook.Application outlookObj = new Microsoft.Office.Interop.Outlook.Application();
               Microsoft.Office.Interop.Outlook.MailItem Item = (Microsoft.Office.Interop.Outlook.MailItem)outlookObj.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
               //Microsoft.Office.Interop.Outlook.MailItem Item = outlookObj.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
               //Item.To = "zhangzhx@inspur.com";
               Item.Subject = Subject;
               //Item.CC = "Task Client";
               //Item.Body = "hello";
               for (int i = 0; i < AttachmentPath.Count; i++)
               {
                   Item.Attachments.Add(AttachmentPath[i].ToString());
               }
               Item.Display(true);
           }
           catch (System.Exception ex)
           {

           }
       }

感谢大家指点

原文地址:https://www.cnblogs.com/zwzw/p/2259446.html