我正在使用.NET 3.5,我想自动发送邮件。我目前正在使用以下内容:
Microsoft.Office.Interop.Outlook.MailItem mailMsg =
(Microsoft.Office.Interop.Outlook.MailItem)outlookApplication.CreateItem(
Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
mailMsg.To = recipient;
mailMsg.Subject = subject;
mailMsg.Body = body;
mailMsg.Send();
但是,我发现有几篇文章似乎暗示我应该使用以下方法:
System.Net.Mail.MailMessage mailMsg = new System.Net.Mail.MailMessage();
mailmsg.To = recipient;
mailmsg.Subject = subject;
mailmsg.Body = body;
任何人都可以告诉我两个名称空间之间的差异,以及为什么你可能想要使用另一个名称空间?
答案 0 :(得分:10)
我认为第一个要求在计算机中安装Outlook,以便安装Office Interop程序集。第二个是纯粹的.Net框架。
答案 1 :(得分:9)
第二个示例需要SMTP服务器才能建立直接连接,并使用此SMTP服务器发送电子邮件。它的开销很低,通常都能正常工作。
如果你需要撰写&发送关于当前用户的行为的电子邮件,您可以使用outlook。
到目前为止,我只看到了前景不利的答案。但它有一些优点:
修改强> 我使用SMTP方法向我们的支持部门发送技术电子邮件(如日志文件和错误消息),这些邮件快速而不被注意。
我使用Outlook方法将用户的行为发送给其他人的邮件。这些邮件很慢,但可以追踪等等。
答案 2 :(得分:5)
第一种方法是通过创建Outlook实例(outlookApplication
)并让该Outlook实例发送电子邮件来使用互操作。
第二个用于通过常规旧SMTP发送电子邮件,根本不需要Outlook。
除非您对互操作有特定需求,否则无需使用outlook发送电子邮件(并且您的代码将无法在未安装Outlook的任何计算机上运行)。
答案 3 :(得分:3)
第一个使用COM互操作,这是不必要的开销。其次是纯粹的.net及其所有功能。此外,它更灵活。
答案 4 :(得分:3)
正如其他人所说,第一个使用outlook发送电子邮件。缺点是用户必须安装Outlook;优点是它看起来像是发送它。
第二种方法将尝试直接发送邮件。优点是它不需要安装outlook,而且开销也少得多。这个选项的缺点是,现在大多数企业都阻塞了端口25,因此当您尝试发送消息时,它将失败。
答案 5 :(得分:2)
他们是不同的。 MailItem表示Outlook中的邮件项。 MailMessage表示可以使用SmtpClient类发送的电子邮件。
答案 6 :(得分:2)
首先使用COM Interop并使用Outlook作为其基础。它需要配置Outlook。第二个是使用SMTP客户端。互操作可能会让你遇到与outlook相关的问题,但会允许一些很酷的功能,如打开邮件窗口(但它通常不值得)。第二个将发送静默邮件,虽然你可以显示自己的一些窗口,但它仍然不会允许Outlook自动化的灵活性。我的选择是System.Net.Mail。*。
答案 7 :(得分:1)
第一个是使用MS Office,当安装.Net框架时,System.Net.Mail可用时,您不想发布它。
答案 8 :(得分:1)
第一个示例使用Office Interop Assemblies下载安装的库。
第二个示例使用默认安装的.NET与.NET框架System.Net。
第一个示例使用Microsoft Interop Libraries。我会选择你的第二个例子,因为它是默认.NET安装的一部分。 Interop库将有更多的开销,也不是必需的。
答案 9 :(得分:1)
Microsoft.Office使用Microsoft Outlook发送电子邮件。它需要安装Outlook,并且(至少我最后一次尝试以这种方式发送邮件)更容易出现问题。 (例如,它会提示用户让他们知道程序正在尝试代表他们发送邮件等)。
System.Net.Mail只使用纯.NET和指定的SMTP服务器来发送邮件。 相信我。除非有需要,否则请避免使用Office。
答案 10 :(得分:1)
您需要在任何一天使用第二个选项。这是纯粹的.NET。
如果你使用第一个选项,我想Outlook应该已经安装在那台机器上。部署时,如果服务器中未安装MS Office,则会出现问题。