.net Core2.0 邮件发送

版权所有,禁止匿名转载;禁止商业使用。

我们知道目前 .NET Core 还不支持 SMTP 协议,当我么在使用到发送邮件功能的时候,需要借助于一些第三方组件来达到目的,今天给大家介绍两款开源的邮件发送组件,它们分别是 MailKit 和 FluentEmail , 下面我对它们分别进行介绍。


在 ASP.NET Core 中,可以使用 MailKit 来发送邮件,它支持跨平台,并且支持 IMAP, POP3, SMTP 等协议。

你可以使用下面的方式安装:

Install-Package MailKit

或者直接用Nuget将 NETCore.MailKit 引用到程序中,然后调用该程序包进行发送,具体方法在下面


private static string host = "smtp.mxhichina.com"; //smtp服务器地址
private static string emailUserName = "";//发件人邮箱
private static string emailAddressName = ""; 发件人姓名
private static string emailPassword = ""; //密码

#region 发送邮件

/// <summary>
/// 同步发送邮件
/// </summary>
/// <param name="email">收件人邮箱地址</param>
/// <param name="subject">标题</param>
/// <param name="message">内容</param>
/// <param name="textpart">内容格式(默认为p:plain),不写为html</param>
/// <returns></returns>
public static bool SendEmail(string email, string subject, string message, string textpart = "p")
{
    textpart = textpart == "p" ? "plain" : "html";
    try
    {
        var emailMessage = new MimeMessage();
        emailMessage.From.Add(new MailboxAddress(emailAddressName, emailUserName));
        string[] emailArray = email.Split(',');
        foreach (var item in emailArray)
        {
            emailMessage.To.Add(new MailboxAddress(item));
        }
        emailMessage.Subject = subject;
        emailMessage.Body = new TextPart(textpart) {Text = message};
        using (var client = new SmtpClient())
        {
            client.Connect(host, 465, true);
            client.Authenticate(emailUserName, emailPassword);
            client.Send(emailMessage);
            client.Disconnect(true);
        }
        return true;
    }
    catch (Exception ex)
    {
        return false;
    }
}

/// <summary>
/// 异步发送邮件
/// </summary>
/// <param name="email">收件人邮箱地址</param>
/// <param name="subject">标题</param>
/// <param name="message">内容</param>
/// <param name="textpart">内容格式(默认为p:plain),不写为html</param>
/// <returns></returns>
public static async Task<bool> SendEmailAsync(string email, string subject, string message, string textpart = "p")
{
    textpart = textpart == "p" ? "plain" : "html";
    try
    {
        var emailMessage = new MimeMessage();
        emailMessage.From.Add(new MailboxAddress(emailAddressName, emailUserName));
        emailMessage.To.Add(new MailboxAddress("mail", email));
        emailMessage.Subject = subject;
        emailMessage.Body = new TextPart(textpart) { Text = message };

        using (var client = new SmtpClient())
        {
            await client.ConnectAsync(host, 25, SecureSocketOptions.None).ConfigureAwait(false);
            await client.AuthenticateAsync(emailUserName, emailPassword);
            await client.SendAsync(emailMessage).ConfigureAwait(false);
            await client.DisconnectAsync(true).ConfigureAwait(false);
        }
        return true;
    }
    catch (Exception ex)
    {
        return true;
    }
  
}

#endregion


1 0