ASP 5,MVC 6发送电子邮件

时间:2015-10-07 19:08:29

标签: c# asp.net-core asp.net-core-mvc

我正在涉足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)中。这让我想到了我的问题......

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

还有一个更大的问题,你在哪里可以找到核心.Net中不再包含的所有内容的替代品?

3 个答案:

答案 0 :(得分:27)

我的开源MimeKitMailKit库现在支持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);
            }
        }
    }
}

答案 1 :(得分:4)

.NET Core目前有几个缺失的API。这些包括您发现的System.ServiceModel.SyndicationFeed以及dnxcore50,它们也可用于构建RSS或Atom供稿。解决方法是针对完整的.NET Framework而不是.NET Core。一旦这些API可用,您就可以始终以.NET Core为目标。

因此,在project.json文件中,您需要删除对dnx451的引用,并为.NET 4.5.1添加dnx46,如果不是,则为.NET 4.6添加"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": { } } } 已经在那里:

{{1}}

答案 2 :(得分:1)

System.Net.Mail 现已移植到.NET Core。请参阅 corefx 回购中的Issue 11792。此更改将成为.NET Standard 2.0的一部分。