C# 用C语言发送电子邮件#

C# 用C语言发送电子邮件#,c#,email,.net-3.5,C#,Email,.net 3.5,我正在使用.NET3.5,我想自动发送邮件。我目前正在使用以下工具: Microsoft.Office.Interop.Outlook.MailItem mailMsg = (Microsoft.Office.Interop.Outlook.MailItem)outlookApplication.CreateItem( Microsoft.Office.Interop.Outlook.OlItemType.olMailItem); mailMsg.To = recipient

我正在使用.NET3.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;

有人能告诉我这两个名称空间之间的区别吗?如果有,为什么要使用一个名称空间而不是另一个名称空间?

第一个名称空间使用COM互操作,这是不必要的开销。第二种是纯.net,它具有所有的功能。另外,它更灵活。

我认为,第一个要求在计算机中安装Outlook,以便安装Office Interop程序集。第二种是纯.Net framework。

第一种方法是通过创建Outlook实例(
outlookApplication
)并让Outlook实例发送电子邮件来使用互操作

第二个用于通过常规的旧SMTP发送电子邮件,根本不需要outlook


除非您对互操作有特殊需求,否则不需要使用outlook发送电子邮件(并且您的代码在未安装outlook的任何计算机上都无法运行)。

第一种是使用MS Office,当安装.Net framework时,System.Net.mail可用时,您不想发布它

第一个示例使用Office Interop程序集下载安装的库

第二个示例使用默认情况下与.NET framework System.NET一起安装的库


第一个示例使用Microsoft互操作库。我将使用第二个示例,因为它是默认.NET安装的一部分。互操作库将有更多不需要的开销。

Microsoft.Office使用Microsoft Outlook发送电子邮件。它需要安装Outlook,而且(至少是我上次尝试用这种方式发送邮件时)更容易出现问题。(例如,它会提示用户让他们知道某个程序正试图代表他们发送邮件,等等)

System.Net.Mail只使用纯.Net和指定的SMTP服务器发送邮件。
相信我。。除非有必要,否则不要使用办公室。

您需要在任何一天使用第二个选项。它是纯.NET

如果您使用第一个选项,我想Outlook应该安装在这台机器上。部署时,如果服务器中没有安装MS Office,则会出现问题。

它们是不同的。 MailItem表示Outlook中的邮件项。 MailMessage表示可以使用SmtpClient类发送的电子邮件


检查并确认。

第一个是使用COM互操作,并使用Outlook作为基础。它需要配置outlook。第二种是使用SMTP客户端。互操作可能会让您遇到与outlook相关的问题,但会允许一些很酷的功能,如打开邮件窗口(但通常不值得)。第二个将发送无声邮件,虽然您可以显示自己的一些窗口,但它仍然不允许Outlook自动化的灵活性。我的选择是System.Net.Mail...

正如其他人提到的,第一个使用outlook发送电子邮件。缺点是用户必须安装outlook;这样做的好处是,看起来outlook正在发送它


第二种方法将尝试直接发送邮件。优点是它不需要安装outlook,而且开销小得多。此选项的缺点是,目前大多数企业都会阻止端口25,因此当您尝试发送邮件时,它将失败。

第二个示例需要一个SMTP服务器来建立直接连接,并使用此SMTP服务器发送电子邮件。它的开销很低,可以正常工作

如果您需要根据当前用户的行为撰写和发送电子邮件,您可以使用outlook

到目前为止,我只看到了对outlook不利的答案。但它有几个优点:

  • 您不必向用户询问任何配置。
    • Outlook已经知道Exchange/SMTP服务器
    • 以及用户的电子邮件地址
  • 您发送的电子邮件将存储在用户的“已发送邮件”列表中。因此,用户可以看到wat是以他的名义发送的
  • 将使用对发送电子邮件进行签名/加密或添加标准公司免责声明的附加组件,因此您将遵守公司政策
  • 如果允许用户发送电子邮件,可以提示用户(是的,这对用户来说是一个优势)
  • 您可以选择仅撰写邮件,并将其呈现给用户。用户可以编辑并选择是否发送
编辑: 我使用SMTP方法将技术邮件(如日志文件和错误消息)发送到我们的支持部门,这些邮件发送速度快且不被注意


我用于向其他人发送有关我的用户行为的邮件的Outlook方法。这些邮件速度很慢,但可以跟踪,等等。

此外,值得注意的是,实例化outlook的开销并不小。有一个名为ClickYes的应用程序可以删除讨厌的弹出窗口(或代表您单击)。链接是。我必须说,我100%同意你的System.Net.Mail策略,而不是使用Outlook或Outlook插件。包装纸把我逼疯了。