网络上讲的c#调用outlook界面发送邮件的例子举不胜数,但都是将调出简单的界面,设置收件人地址、邮件标题、正文内容等,但对于发送指定附件的说明非常少。也有实现的,却是采用引入outlook对象库,我不想只为了如此一个小功能去引入那么大个东东,太恶心!刚好也想给crossfile2.0加入这个小功能,于是乎昨晚仔细研究了下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
{
}
}