1.工具
NETCore.MailKit包
VS2022
2.过程
1)创建项目api
引用NETCore.MailKit包
2)设置appsettings
"EmailOptions": {
"SenderName": "系统邮件", //发送者名称,可在代码中重新替换
"FromAddress": "xxxxxx@163.com", //发件者邮箱
"ToAddress": "xxxx@qq.com", //接收人邮箱
"Host": "smtp.163.com", //主机
"Port": 465, //端口 阿里云默认25端口不开放,需要使用SSL的465端口
"UserName": "xxxxx@163.com", //发件邮箱账号
"Password": "xxxxxx" //发件邮箱授权码(授权码是用于登录第三方邮件客户端的专用密码)
}
3)获取163的授权码
登录-进入设置-开启(IMAP/SMTP服务、POP3/SMTP服务)-这个时候就有 了授权码
4)初始化
using NETCore.MailKit.Extensions; using NETCore.MailKit.Infrastructure.Internal; using Service.Dto; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); builder.Services.Configure(builder.Configuration.GetSection("EmailOptions")); builder.Services.AddMailKit(optionBuilder => { optionBuilder.UseMailKit(new MailKitOptions() { //get options from sercets.json Server = builder.Configuration.GetValue ("EmailOptions:Host"), Port = builder.Configuration.GetValue ("EmailOptions:Port"), SenderName = builder.Configuration.GetValue ("EmailOptions:SenderName"), SenderEmail = builder.Configuration.GetValue ("EmailOptions:FromAddress"), // can be optional with no authentication Account = builder.Configuration.GetValue ("EmailOptions:UserName"), Password = builder.Configuration.GetValue ("EmailOptions:Password"), // enable ssl or tls Security = true }); }); var app = builder.Build(); // Configure the HTTP request pipeline. app.UseAuthorization(); app.MapControllers(); app.Run();
5)创建类
////// 配置文件Dto /// public class EmailOptions { public string FromAddress { get; set; } public string ToAddress { get; set; } public string Host { get; set; } public string UserName { get; set; } public string Password { get; set; } }
6)api调用
private readonly EmailOptions options;
private readonly IEmailService _EmailService;
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger _logger;
public WeatherForecastController(ILogger logger, IOptions options, IEmailService emailService)
{
_logger = logger;
this.options = options.Value;
_EmailService = emailService;
}
[HttpGet]
public async Task> Get()
{
//设置发送人的邮件地址和名称,在接收人接收到邮件提示时会显示该信息
var sendInfo = new SenderInfo
{
SenderEmail = options.FromAddress,
SenderName = "发送者名称",
};
await _EmailService.SendAsync(options.ToAddress, "标题名", "邮件内容", false, sender: sendInfo);
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
7)接收成功
8)源码:
net6发送邮件demo-C#文档类资源-CSDN下载



