用C#发送电子邮件

Pau*_*els 10 c# email .net-3.5

我正在使用.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();
Run Code Online (Sandbox Code Playgroud)

但是,我发现有几篇文章似乎暗示我应该使用以下方法:

System.Net.Mail.MailMessage mailMsg = new System.Net.Mail.MailMessage();
mailmsg.To = recipient;
mailmsg.Subject = subject;
mailmsg.Body = body;
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我两个名称空间之间的差异,以及为什么你可能想要使用另一个名称空间?

Col*_*ond 10

我假设第一个需要在计算机中安装Outlook,以便安装Office Interop程序集.第二个是纯.Net框架.

  • 另外值得注意的是,实例化outlook的开销并非微不足道. (3认同)

GvS*_*GvS 9

第二个示例需要SMTP服务器,以进行直接连接,并使用此SMTP服务器发送电子邮件.它的开销很低,通常都能正常工作.

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

到目前为止,我只看到了前景不利的答案.但它有一些优点:

  • 您无需询问用户任何配置.
    • Outlook已经知道Exchange/SMTP服务器,
    • 和用户的电子邮件地址
  • 您发送的电子邮件将存储在用户的已发送邮件列表中.因此用户可以看到以他的名义发送的wat.
  • 将使用签署/加密外发电子邮件或添加标准公司免责声明的附加组件,因此您将遵循公司政策
  • 可以提示用户是否允许发送电子邮件(是的,这可能是一个优势)
  • 您可以选择仅撰写邮件,将其呈现给用户.用户可以编辑并选择是否发送.

编辑: 我使用SMTP方法向我们的支持部门发送技术电子邮件(如日志文件和错误消息),这些邮件快速而不被注意.

我使用Outlook方法将用户行为的邮件发送给其他人.这些邮件很慢,但可以跟踪,等等.


Jas*_*yon 5

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

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

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