网络上讲的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
{
}
}