C# 从COM+自动化Outlook;

C# 从COM+自动化Outlook;,c#,com,outlook,office-interop,C#,Com,Outlook,Office Interop,我需要实现以下目标 1-将电子邮件另存为草稿,用户可以稍后手动打开、修改和发送 2-撰写电子邮件并以新电子邮件的形式打开outlook,允许用户随时发送或放弃 有使用Microsoft.Office.Interop.Outlook和SmtpClient的示例代码。我相信SmtpClient无法自动执行Outlook。对于第二个选项,我不想添加Microsoft.Office.Interop.Outlook的引用,因为如果未安装Office Outlook会怎么样 因此,请指导我进一步阅读 编辑

我需要实现以下目标

1-将电子邮件另存为草稿,用户可以稍后手动打开、修改和发送

2-撰写电子邮件并以新电子邮件的形式打开outlook,允许用户随时发送或放弃

有使用Microsoft.Office.Interop.Outlook和SmtpClient的示例代码。我相信
SmtpClient
无法自动执行Outlook。对于第二个选项,我不想添加Microsoft.Office.Interop.Outlook的引用,因为如果未安装Office Outlook会怎么样

因此,请指导我进一步阅读

编辑

即使未安装outlook,使用“无引用”也肯定会使表单打开,只需在之后为
oType
检查null即可

Type oType = Type.GetTypeFromProgID("Outlook.Application");
如果我添加引用,客户端打开表单时outlook不存在,或者引用的库是Office 2013,安装的库是Office 2010,该怎么办?表单是否会打开或抛出异常,或者下面的行是否仍然有效

Microsoft.Office.Interop.Outlook.Application myApp = new Microsoft.Office.Interop.Outlook.ApplicationClass();    
Microsoft.Office.Interop.Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI");

你需要在这里澄清一下。你说你想自动化Outlook,但不依赖它。这很奇怪,除非你抽象出电子邮件客户端的概念,而这似乎不是你的动机


假设您确实依赖于互操作程序集,那么您可以在应用程序实际使用该引用之前检查是否存在已断开/无效的引用。请参见

假设,我添加了引用并部署了应用程序,客户机没有office,客户机打开了表单,其中的“电子邮件”按钮将执行此任务。客户端没有单击电子邮件按钮,只是打开了表单。窗体将打开还是抛出错误?