首页 > 编程语言 >使用ASP.NET Core Minimal API和MailKit发送电子邮件

使用ASP.NET Core Minimal API和MailKit发送电子邮件

时间:2023-07-27 15:33:37浏览次数:43  
标签:Core ASP MailKit request public API 电子邮件 config email

步骤1:创建新项目

通过以下命令在终端中创建一个新的ASP.NET Core Web API项目:

dotnet new webapi -o SendingEmail
由于我们正在使用Minimal APIs,因此删除不必要的Controller文件夹和WeatherForecast类。

步骤2:定义电子邮件数据传输对象(DTO)

为了将数据从我们的API传递到邮件服务器,我们需要定义一个名为EmailDto的DTO模型。在项目目录下的Models文件夹中添加一个名为EmailDto的类,并拥有From、To、Subject和Body四个属性。

namespace SendingEmail.API.Models
{
    public class EmailDto
    {
        public string From { get; set; }
        public string To { get; set; } 
        public string Subject { get; set; } 
        public string Body { get; set; }
    }
}

步骤3:创建电子邮件服务接口

在项目根目录下的Services文件夹中,创建一个名为IEmailService的接口,只包含一个方法——SendEmailAsync(EmailDto request)。然后在Services文件夹内添加EmailService类作为IEmailService接口的实现,并引用MailKit NuGet包。下面是EmailService的实现:

using MailKit.Net.Smtp;
using MailKit.Security;
using MimeKit;
using MimeKit.Text;

namespace SendingEmail.API.Services
{
    public class EmailService : IEmailService
    {
        private readonly IConfiguration _config;
        public EmailService(IConfiguration config)
        {
            _config = config;
        }

        public async Task SendEmailAsync(EmailDto request)
        {
            var email = new MimeMessage(); 
            email.From.Add(MailboxAddress.Parse(request.From));
            email.To.Add(MailboxAddress.Parse(request.To));
            email.Subject = request.Subject;
            email.Body = new TextPart(TextFormat.Html) {Text = request.Body};

            using var smtp = new SmtpClient();
            await smtp.ConnectAsync(_config["EmailHost"], 587, SecureSocketOptions.StartTls);
            await smtp.AuthenticateAsync(_config["EmailUsername"], _config["EmailPassword"]);
            await smtp.SendAsync(email);
            await smtp.DisconnectAsync(true);
        }
    }
}

步骤4:配置API终端点

创建一个终端点,使用电子邮件服务处理电子邮件发送请求。将HTTP POST请求映射到/email路径:

app.MapPost("/email", (EmailDto request, IEmailService emailService) =>
{
    emailService.SendEmailAsync(request);
    return Results.Ok();
});

将IEmailService接口注入到构建器服务中:

builder.Services.AddScoped<IEmailService, EmailService>();

步骤5:设置应用程序配置

在appsettings.json文件中存储电子邮件发送的应用程序设置,例如邮箱主机、用户名和密码等。以下是示例:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "EmailHost": "xxxxx",
  "EmailUsername": "xxxxxx", 
  "EmailPassword": "xxxxxx",
  "AllowedHosts": "*"
}

步骤6:使用Swagger进行测试

使用Swagger测试应用程序非常容易。在浏览器中导航到https://localhost:{yourPort}/swagger/index.html,并单击POST /email下的“尝试”按钮。以JSON格式填充您首选的电子邮件DTO属性(包含From、To、Subject和Body属性),然后单击“执行”。响应代码200和结果消息表明电子邮件已成功提交。

结论

从API发送电子邮件可以是增强用户体验的强大功能。通过本教程,您已经学会了如何使用ASP.NET Core Minimal API和MailKit发送电子邮件。祝编码愉快

标签:Core,ASP,MailKit,request,public,API,电子邮件,config,email
From: https://www.cnblogs.com/MrChuJiu/p/17585097.html

相关文章

  • .NET Core依赖注入与Autofac注入介绍
    0前言本文主要介绍了ASP.NETCore自带的依赖注入框架的用法,然后针对原生框架的不足,介绍了更加完备的autofac框架的集成和使用。1.NETCore原生DI框架.NetCore自带一个依赖注入的框架,使用起来很是方便,不多说,先从简单示例做起。1.1简单示例以ASP.NETCoreweb的API项目为例......
  • asp.net core之Host
    Host简介在ASP.NETCore中,Host是一个托管应用程序的宿主环境。它提供了一种统一的方式来启动和运行应用程序,无论是在开发环境中还是在生产环境中。Host负责处理应用程序的生命周期、配置和依赖项管理等任务,使开发人员能够专注于应用程序的业务逻辑。Host是通过使用IHostBuilder......
  • ASP.NET Core Identity 系列之一
    ASP.NETCoreIdentity提供给我们一组工具包和API,它能帮助我们应用程序创建授权和认证功能,也可以用它创建账户并使用用户名和密码进行登录,同时也提供了角色和角色管理功能。ASP.NETCoreIdentity使用SQLServer/第三方数据库存储用户名和密码,角色和配置数据这系列中我们主要使用......
  • ASP.NET Core Identity 系列之一
    ASP.NETCoreIdentity提供给我们一组工具包和API,它能帮助我们应用程序创建授权和认证功能,也可以用它创建账户并使用用户名和密码进行登录,同时也提供了角色和角色管理功能。ASP.NETCoreIdentity使用SQLServer/第三方数据库存储用户名和密码,角色和配置数据这系列中我们主要使用VS......
  • Asp.Net 使用Log4Net (封装帮助类)
    Asp.Net使用Log4Net(封装帮助类)1.创建Log4Net帮助类首先,在你的项目中创建一个Log4Net帮助类,用于封装Log4Net的配置和日志记录逻辑。usinglog4net;usinglog4net.Config;publicclassLogHelper{privatestaticreadonlyILoglog=LogManager.GetLogger(typeof(......
  • Asp.Net 使用Log4Net (基础版)
    Asp.Net使用Log4Net(基础版)1.创建项目创建ASP.NETWebForms项目在VisualStudio中创建一个新的ASP.NETWebForms项目。命名为"Log4NetDemo"。2.安装Log4Net包打开NuGet包管理器控制台,并运行以下命令来安装Log4Net:mathematicaCopycodeInstall-Packagelog4net3.添......
  • Asp.Net 6中使用Log4Net
    Asp.Net6中使用Log4Net1.先新建一个ASP.NETCore空项目2.通过Nuget包管理器安装下面两个包log4netMicrosoft.Extensions.Logging.Log4Net.AspNetCore3.在项目根目录下新建log4net的配置文件log4net.config,并将其设置为始终复制。<?xmlversion="1.0"encoding="utf-......
  • Asp.Net MVC 使用Log4Net
    Asp.NetMVC使用Log4Net在ASP.NETMVC中使用Log4net需要进行一些配置和代码集成。下面是在ASP.NETMVC中使用Log4net的步骤:1.安装Log4netNuGet包打开NuGet包管理器控制台,并运行以下命令来安装Log4net:Install-Packagelog4net2.添加Log4net配置文件在你......
  • Asp.Net 使用Log4Net (SQL Server)
    Asp.Net使用Log4Net(SQLServer)1.创建数据库表首先,在你的SQLServer数据库中创建一个用于存储日志的表。以下是一个简单的表结构示例:CREATETABLE[dbo].[Logs]([Id][INT]IDENTITY(1,1)PRIMARYKEY,[Date][DATETIME]NOTNULL,[Thread][VARCHAR](255)......
  • AI面试官:Asp.Net 中使用Log4Net (三)
    AI面试官:Asp.Net中使用Log4Net(三)当面试涉及到使用log4net日志记录框架的相关问题时,通常会聚焦在如何在.NET或.NETCore应用程序中集成和使用log4net。以下是一些关于log4net的面试题目,以及相应的解答、案例和代码:目录AI面试官:Asp.Net中使用Log4Net(三)11.如何在log4net中......