首先,引入命名空间:
using System.Net.Mail; //注意不要引用成System.Web.Mail
然后,用一个MailMessage对象配置Email本身的相关信息:
MailMessage mail = new MailMessage { From = new MailAddress("feige_20200214@163.com"), Subject = "激活Email", Body = $"感谢你的注册…… 你的注册码是:2345", IsBodyHtml = true //最终呈现样式由收件服务器决定 }; mail.To.Add("2282636022@qq.com");接下来,配置SMTP客户端(实际上是发送Email的服务器)
SmtpClient client = new SmtpClient { Host = "smtp.163.com", Port = 25, Credentials = new NetworkCredential("feige_20200214", "yz17bang"), EnableSsl = false }; client.Send(mail);
注意:SmtpClient 版本只支持 Explicit SSL,所以我们:EnableSsl = false
发送email极有可能是比较耗时且不占用当前CPU资源的,所以出于性能的考虑,我们当然会想到异步。
SmtpClient为我们贴心的准备了非阻塞的异步方法:
client.SendAsync(mail, "user-23");
第二个参数可以是任意的object,通常用于标记确定该email。
但我们怎么安排email发送完成后的代码呢?注意SendAsync()没有返回Task而是void,所以无法利用异步方法,但可以利用:
复习:event
SmtpClient中提供了一个SendCompleted事件,在email异步发送完成时调用:(演示+=之后双击Tab)
client.SendCompleted += Client_SendCompleted;
private static void Client_SendCompleted(object sender, AsyncCompletedEventArgs e)Client_SendCompleted采用的是标准事件模板:
Console.WriteLine(e.Error?.Message); //复习?.
Console.WriteLine(e.UserState.ToString());
甚至还可以(在发送完成前,@想一想@:如何确定发送有无完成?)取消email的发送
client.SendAsyncCancel();
在.NET项目中的配置文件(复习)就是App.config(演示:项目上右键 - Add New Item - Application Configuration File)
.config文件是XML格式的,常用的节点:
如果是Web应用,配置文件的名称就是web.config
另:最新版的ASP.NET core默认使用json格式的配置文件,需要用依赖注入的方式获取……
通过nuget导入log4net之后,
app.config(只能是这个名字),里面放置xml内容。其结构为:
<?xml version="1.0" encoding="utf-8" ?>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
首先需要指定log4net使用的配置文件:
XmlConfigurator.Configure(); //参数为空,使用默认的app.config
多快好省!前端后端,线上线下,名师精讲
更多了解 加: