我只想打开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 + "\"");
}
答案 0 :(得分:0)
不幸的是,答案是:你不能。 Outlook命令行开关不支持附加多个文件。
如果您真的想使用此方法启动Outlook,请将附件压缩到单个文件中,然后附加该文件。
如果您在发送电子邮件时需要用户互动,我建议您重新审视COM方法。我知道你已经放弃了,但我不相信你的技术问题无法解决(提示:启动堆栈溢出问题)。
如果您不需要用户交互,请务必使用SMTP。为每个消息启动一个新的outlook实例往往相当脆弱,因为一个挂起的实例可以阻止所有后续实例出现。