1、进入qq邮箱首页,点击设置

 

 

 2、点击 账户 选项卡 ,划到大概中间部分,有一个服务选项区。经实验开启前两个就可以了。

 

3、点击下方的 生成授权码,在开启服务之后会自动生成一次。这一步如果绑定了密保,会先进行一次身份验证。验证之后会发放一个授权码。这个授权码,在程序里会用到。

 

 

*******************************************************代码部分*******************************************************

public class EmailService : IEmailService
    {
        private readonly IConfiguration _configuration;
        public EmailService(IConfiguration configuration)
        {
            _configuration = configuration;
        }

        public async Task SendEmailAsync(MimeMessage message)
        {
            var host = "smtp.qq.com";
            var port = 465;
            var useSsl = true;
            var from_username = "*******@qq.com";
            // 授权码
            var from_password = "********";
            var from_name = "好医生";
            var from_address = "********@qq.com";

            var address = new List<MailboxAddress>
            {
                new MailboxAddress("123456","123456@qq.com"),
                new MailboxAddress("56789","56789@qq.com")
            };

            message.From.Add(new MailboxAddress(from_name, from_address));
            message.To.AddRange(address);

            using var client = new SmtpClient
            {
                ServerCertificateValidationCallback = (s, c, h, e) => true
            };
            client.AuthenticationMechanisms.Remove("XOAUTH2");

            await client.ConnectAsync(host, port, useSsl);
            await client.AuthenticateAsync(from_username, from_password);
            await client.SendAsync(message);
            await client.DisconnectAsync(true);
        }
    }

 

 调用

var message = new MimeMessage
            {
                Subject = "程序异常",
                Body = new BodyBuilder
                {
                    HtmlBody = msg
                }.ToMessageBody()
            };

            await _emailService.SendEmailAsync(message);
                

 

 

posted @ 2022-09-06 15:03 月下之神 阅读(301) 评论(0) 推荐(0) 编辑
摘要: namespace EventDemo { /// <summary> /// 委托:委托别人干什么事 /// 事件:委托是类,事件相当于类的实例 /// /// 例子:猫叫 - 主人醒 - 老鼠跑 /// /// 猫叫后,委托别人把主人醒的方法调用,也委托别人把老鼠跑的实例调用,还可以委托别人做更 阅读全文
posted @ 2022-05-23 11:16 月下之神 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 应用场景: 比如委托内,可以随你写连接数据库的种类,可以链接mysql,也可以链接sqlserver,那么方法名不用变,只需要委托函数内做的事情变化即可。 阅读全文
posted @ 2022-05-14 21:15 月下之神 阅读(57) 评论(0) 推荐(0) 编辑
摘要: public override async Task<ReturnT> Execute(JobExecuteContext context) { _logger.LogInformation($"视频配置信息获取任务开始......开始时间:{DateTime.Now}"); try { // 重试 阅读全文
posted @ 2022-01-11 16:01 月下之神 阅读(70) 评论(0) 推荐(0) 编辑
摘要: var metadata = new Metadata { { "x-trace-id", $"123456789" } }; var channel = GrpcChannel.ForAddress($"http://172.17.12.175:20026"); // 开发环境请求地址var cl 阅读全文
posted @ 2021-12-29 13:51 月下之神 阅读(2446) 评论(0) 推荐(1) 编辑
摘要: 现在编程方式应该是约定大于配置,即使在开发阶段,和组员沟通好,以某一种方式去编程,不要随意去编写,按约定好的编程方式去编程会有很大的便利,不需要进行太多的判断和配置。比如依赖注入,之前都是创建一个接口,就要去手动注入一次,当然你也有别的方式去处理,不用每次创建都去手动注入,今天我要记录的是和组员约定 阅读全文
posted @ 2021-11-06 15:37 月下之神 阅读(417) 评论(0) 推荐(0) 编辑
摘要: 1. 本地环境没问题,上了测试出问题 相信很多朋友都有我这样类似的遭遇,明明程序代码,配置文件都一样,挪了一个窝就出问题,你说气人不,既然问题出了那怎么快速解决呢? 对,就是用调试,但程序部署在 centos 上,送一个 visualstudio 上去也不现实,在这种限制级条件下还想调试怎么办呢?不 阅读全文
posted @ 2020-11-10 14:24 月下之神 阅读(1620) 评论(0) 推荐(0) 编辑
摘要: using System; using System.Collections.Generic; using System.IO; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft. 阅读全文
posted @ 2020-04-26 17:53 月下之神 阅读(1308) 评论(0) 推荐(0) 编辑
摘要: SELECT a.click_date Time, IFNULL(b.total,0) as InCome FROM ( SELECT DATE_SUB( CURDATE( ), INTERVAL 7 DAY ) AS click_date UNION ALL SELECT DATE_SUB( CURDATE( ), INTERVAL 6 DAY ) AS click_date UNI... 阅读全文
posted @ 2020-01-14 11:23 月下之神 阅读(4226) 评论(0) 推荐(1) 编辑
摘要: 官网:hangfire.io 简单用法: 1.放入job 实际项目:见Communication.Api -> SmsCoreController 阅读全文
posted @ 2019-10-24 11:12 月下之神 阅读(278) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示