栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

.net6发送邮件

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.net6发送邮件

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下载

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983703.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号