使用Process.Start使用MULTIPLE附件填充电子邮件

时间:2014-02-07 20:11:24

标签: c# email outlook email-attachments process.start

我只想打开outlook“New Email”窗口并填充多个附件,我认为Process.Start比SMTP更容易,因为我不必传入我的SMTP服务器。我最初的计划是使用Microsoft.Office.Interop.Outlook,但由于我以管理员身份运行我的应用程序,因此我必须将此选项排除在外。

这是我到目前为止,它只需要一个附件,是否有可能在fn之后传入第二个参数(fn2)?

static void Main(string[] args)
{
     string programFilesPath = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
     var selectedApplicationPath = Directory.GetFiles(programFilesPath, "Outlook.exe", SearchOption.AllDirectories);
     if (selectedApplicationPath.Length <= 0) return;

     var outlookProcessPath = selectedApplicationPath[0];
     if (string.IsNullOrWhiteSpace(outlookProcessPath)) return;
     string fn = @"path1";
     string fn2 = @"path2";
     Process.Start(outlookProcessPath, "/a \"" + fn + "\"");
 }

1 个答案:

答案 0 :(得分:0)

不幸的是,答案是:你不能。 Outlook命令行开关不支持附加多个文件。

如果您真的想使用此方法启动Outlook,请将附件压缩到单个文件中,然后附加该文件。

如果您在发送电子邮件时需要用户互动,我建议您重新审视COM方法。我知道你已经放弃了,但我不相信你的技术问题无法解决(提示:启动堆栈溢出问题)。

如果您需要用户交互,请务必使用SMTP。为每个消息启动一个新的outlook实例往往相当脆弱,因为一个挂起的实例可以阻止所有后续实例出现。