当前位置: 首页 > ops >正文

asp.net发送电子邮件_如何在ASP.NET Core中发送电子邮件

asp.net发送电子邮件

您通常需要通过应用程序发送电子邮件。 您可以利用MailKit NuGet包在ASP.NET Core中发送电子邮件。 MailKit是一个开源邮件客户端库,可以在Windows,Linux或Mac系统上运行的.NET或.NET Core应用程序中使用。 本文讨论了如何使用MailKit NuGet包在ASP.NET Core中发送电子邮件。

若要使用本文提供的代码示例,您应该在系统中安装Visual Studio 2019。 如果您还没有副本,则可以在此处下载Visual Studio 2019 。

[ 也在InfoWorld上:为Windows 10X和Surface Neo开发 ]

创建一个ASP.NET Core API项目

首先,让我们在Visual Studio中创建一个ASP.NET Core项目。 假设系统中已安装Visual Studio 2019,请按照以下概述的步骤在Visual Studio中创建一个新的ASP.NET Core项目。

  1. 启动Visual Studio IDE。
  2. 点击“创建新项目”。
  3. 在“创建新项目”窗口中,从显示的模板列表中选择“ ASP.NET Core Web应用程序”。
  4. 点击下一步。
  5. 在接下来显示的“配置新项目”窗口中,指定新项目的名称和位置。
  6. 单击创建。
  7. 在“创建新的ASP.Net Core Web应用程序”窗口中,从顶部的下拉列表中选择.NET Core作为运行时,并选择ASP.NET Core 2.2(或更高版本)。 我将在这里使用ASP.NET Core 3.0。
  8. 选择“ API”作为项目模板以创建新的ASP.NET Core API应用程序。
  9. 确保未选中“启用Docker支持”和“配置HTTPS”复选框,因为我们此处将不使用这些功能。
  10. 确保将身份验证设置为“无身份验证”,因为我们也不会使用身份验证。
  11. 单击创建。

这将在Visual Studio中创建一个新的ASP.NET Core API项目。 在“解决方案资源管理器”窗口中选择Controllers解决方案文件夹,然后单击“添加-> Controller…”以创建一个名为DefaultController的新控制器。 我们将在本文的后续部分中使用该项目。

安装MailKit NuGet软件包

要使用MailKit,您应该从NuGet安装MailKit软件包。 您可以通过Visual Studio 2019 IDE中的NuGet包管理器来执行此操作,也可以通过在NuGet包管理器控制台上执行以下命令来执行此操作:

Install-Package NETCore.MailKit

您还需要在代码中添加对以下命名空间的引用:

using MailKit.Net.Smtp;
using MimeKit;

在ASP.NET Core中指定电子邮件配置元数据

以下代码段显示了如何在appsettings.json文件中指定电子邮件配置详细信息。

"NotificationMetadata": {
    "Sender": "sender_email@gmail.com",
    "SmtpServer": "smtp.gmail.com",
    "Reciever": "receiver_email@yahoo.com",
    "Port": 465,
    "Username": "sender_email_user@gmail.com",
    "Password": "specify your password here"
  }

要读取电子邮件配置数据,我们将利用以下类。

public class NotificationMetadata
    {
        public string Sender { get; set; }
        public string Reciever { get; set; }
        public string SmtpServer { get; set; }
        public int Port { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
    }

这是如何将电子邮件配置数据从appsettings.json文件读取到NotificationMetadata类的实例中的方法。

public void ConfigureServices(IServiceCollection services)
{
     var notificationMetadata =
     Configuration.GetSection("NotificationMetadata").
     Get<NotificationMetadata>();
     services.AddSingleton(notificationMetadata);
     services.AddControllers();
}

在ASP.NET Core中创建EmailMessage类的实例

使用以下代码创建一个名为EmailMessage的新类:

public class EmailMessage
    {
        public MailboxAddress Sender { get; set; }
        public MailboxAddress Reciever { get; set; }
        public string Subject { get; set; }
        public string Content { get; set; }
    }

在ASP.NET Core中创建MimeMessage类的实例

以下方法说明了如何从自定义类EmailMessage的实例创建MimeMessage实例。

private MimeMessage CreateMimeMessageFromEmailMessage(EmailMessage message)
{
     var mimeMessage = new MimeMessage();
     mimeMessage.From.Add(message.Sender);
     mimeMessage.To.Add(message.Reciever);
     mimeMessage.Subject = message.Subject;
     mimeMessage.Body = new TextPart(MimeKit.Text.TextFormat.Text)
     { Text = message.Content };
     return mimeMessage;
}

使用ASP.NET Core中的MailKit同步发送电子邮件

要发送电子邮件,我们需要利用与MailKit.Net.Smtp命名空间有关的SmtpClient类。 以下代码段说明了如何完成此操作。

using (SmtpClient smtpClient = new SmtpClient())
{
  smtpClient.Connect(_notificationMetadata.SmtpServer,
  _notificationMetadata.Port, true);
  smtpClient.Authenticate(_notificationMetadata.UserName,
  _notificationMetadata.Password);
  smtpClient.Send(mimeMessage);
  smtpClient.Disconnect(true);
}

为了方便起见,这是DefaultController类的Get操作方法的完整代码。

public string Get()
{
EmailMessage message = new EmailMessage();
message.Sender = new MailboxAddress("Self", _notificationMetadata.Sender);
message.Reciever = new MailboxAddress("Self", _notificationMetadata.Reciever);
message.Subject = "Welcome";
message.Content = "Hello World!";
var mimeMessage = CreateEmailMessage(message);
using (SmtpClient smtpClient = new SmtpClient())
 {
    smtpClient.Connect(_notificationMetadata.SmtpServer,
    _notificationMetadata.Port, true);
    smtpClient.Authenticate(_notificationMetadata.UserName,
    _notificationMetadata.Password);
    smtpClient.Send(mimeMessage);
    smtpClient.Disconnect(true);
  }
 return "Email sent successfully";
}

[ 同样在InfoWorld上:Git和GitHub用户的27个基本技巧 ]

使用ASP.NET Core中的MailKit异步发送电子邮件

以下代码段说明了我们刚刚编写的异步版本的代码,用于同步发送电子邮件。

using (SmtpClient smtpClient = new SmtpClient())
 {
      await smtpClient.ConnectAsync(_notificationMetadata.SmtpServer,
      _notificationMetadata.Port, true);
      await smtpClient.AuthenticateAsync(_notificationMetadata.UserName,
      _notificationMetadata.Password);
      await smtpClient.SendAsync(mimeMessage);
      await smtpClient.DisconnectAsync(true);
 }

最后,请注意,MailKit还允许您使用模板甚至包含附件的电子邮件发送电子邮件。 我将在以后的文章中演示MailKit的其他功能。

翻译自: https://www.infoworld.com/article/3534690/how-to-send-emails-in-aspnet-core.html

asp.net发送电子邮件

http://www.xdnf.cn/news/10999.html

相关文章:

  • NC网络工具的使用
  • 华东政法大学教学管理系统_华东政法大学教学管理信息系统登录入口、成绩查询网上选课查分...
  • 360手机刷机失败变黑砖,救砖教程
  • 常用网络特殊符号大全(含彩色表情符号)
  • android 4.3特殊功能,Android 4.3有什么新功能
  • 一次局域网入侵全过程
  • 2021-06-15——这56个免费资源网站,能让你永久告别资源付费!
  • Mac OS X – BootCamp安装Win7小记
  • URL编码解析
  • 关于小凡模拟器设置完后找不到所要配置文件的问题
  • 计算机基础知识
  • python多线程爬取某网站全部h漫画_Python多线程爬虫爬取网页图片
  • dhtmlxgantt异步读取数据库数据
  • 当Windows安全中心服务无法启动时怎么办?这里提供几个解决方案
  • 超炫Android2.1 谷歌Nexus One界面赏析
  • 前端如何做单元测试? 看这篇就入门了
  • 【云计算学习教程】探讨私有云计算平台的搭建(附带3套解决方案)_私有云云平台解决方案学习路径
  • c:out标签中的escapeXML属性
  • 从那里进入EI检索号查询入口?
  • alfafile中转站免费_中转站全集免费在线观看-手机看中转站HD完整版 - 穷TV_院线大片影视大全...
  • 从报名到领证:软考初级【网络管理员】报名考试全攻略
  • 软件项目管理:使用PERT评价不确定性的方法
  • FinePlus v1.2
  • FPGA 时钟设计 1 —— 时钟资源总结
  • 零基础如何自学编程?用这6种方法就够了!
  • ewebeditor编辑器ASP/ASPX/PHP/JSP版本漏洞利用总结及解决方法
  • 牛人搜集的常用的资源类网站及68个各类资源网站汇总
  • Linux 指令学习之crontab
  • 如何利用新浪博客做外链
  • HTML用方法alarm实现clock,C#实现闹钟AlarmClock实例代码