ASP 5, MVC 6发送邮件

本文关键字:6发 MVC ASP | 更新日期: 2023-09-27 18:16:26

我正在涉水ASP 5/MVC 6组合,我发现我不再知道如何做最简单的事情。例如,你如何发送电子邮件?

在MVC 5的世界里,我会这样做:

using (var smtp = new SmtpClient("localhost"))
{
    var mail = new MailMessage
    {
        Subject = subject,
        From = new MailAddress(fromEmail),
        Body = message
    };
    mail.To.Add(toEmail);
    await smtp.SendMailAsync(mail);
}

现在这段代码不再编译,因为System.Net.Mail似乎不再存在了。在互联网上进行了一些探索之后,它似乎不再包括在新核心(dnxcore50)中。这就引出了我的问题……

在新世界你如何发送电子邮件?

还有一个更大的问题,你在哪里找到替代品来代替那些不再包含在core .Net中的东西?

ASP 5, MVC 6发送邮件

我的开源MimeKit和MailKit库现在支持dnxcore50,它为创建和发送电子邮件提供了一个非常好的API。作为一个额外的好处,MimeKit支持DKIM签名,这正成为越来越多的必备功能。

using System;
using MailKit.Net.Smtp;
using MailKit;
using MimeKit;
namespace TestClient {
    class Program
    {
        public static void Main (string[] args)
        {
            var message = new MimeMessage ();
            message.From.Add (new MailboxAddress ("Joey Tribbiani", "joey@friends.com"));
            message.To.Add (new MailboxAddress ("Mrs. Chanandler Bong", "chandler@friends.com"));
            message.Subject = "How you doin'?";
            message.Body = new TextPart ("plain") {
                Text = @"Hey Chandler,
I just wanted to let you know that Monica and I were going to go play some paintball, you in?
-- Joey"
            };
            using (var client = new SmtpClient ()) {
                client.Connect ("smtp.friends.com", 587, false);
                // Note: only needed if the SMTP server requires authentication
                client.Authenticate ("joey", "password");
                client.Send (message);
                client.Disconnect (true);
            }
        }
    }
}

。. NET Core目前有几个缺失的API。其中包括您已经发现的System.Net.Mail.SmtpClientSystem.ServiceModel.SyndicationFeed,它们也可用于构建RSS或Atom提要。解决这个问题的方法是针对完整的。net框架,而不是。net核心。一旦这些API可用,你就可以随时瞄准。net Core。

在你的项目中。您需要删除对dnxcore50的引用,并在。net 4.5.1中添加dnx451或在。net 4.6中添加dnx46(如果它还没有):

"frameworks": {
  "dnx451": {
    "frameworkAssemblies": {
      "System.ServiceModel": "4.0.0.0"
      // ..Add other .NET Framework references.
    }
  },
  // Remove this to stop targeting .NET Core.
  // Note that you can't comment it out because project.json does not allow comments.
  "dnxcore50": {            
    "dependencies": {
    }
  }
}

System.Net。Mail现在已经移植到。net Core。参见corefx repo中的Issue 11792。