在很多应用程序中,我们需要使用邮箱来进行用户身份验证。其中一种常见的方式是通过发送验证码到用户的邮箱,然后要求用户输入该验证码进行验证。本文将介绍如何使用 C# 发送邮箱验证码。
验证码登录没有用任何的工具(redis等)
可以看本人上一篇获取QQ邮箱的授权码(可代发邮件验证码)的获取QQ的授权码。
public string EmailSend(string email)
{
try
{
// 模拟随机验证码 生成随机六位数
Random random = new Random();
int randomNum = random.Next(100000, 999999);
string randomNumber = randomNum.ToString();
// 邮件发送设置
using (var mailMessage = new MailMessage())
{
mailMessage.From = new MailAddress("用于发送验证码的邮箱");
//接受验证码的邮箱 一般是登录时用户登录的邮箱
mailMessage.To.Add(new MailAddress(email));
mailMessage.Subject = "用户的验证码";
mailMessage.IsBodyHtml = true;
// 使用内联 CSS 样式
mailMessage.Body = @"<html>
<head>
<style>
h1 {
color: #333;
font-family: Arial, sans-serif;
}
p {
color: #555;
font-family: Arial, sans-serif;
}
strong {
color: #f00;
font-weight: bold;
}
</style>
</head>
<body>
<h1>验证码</h1>
<p>您的验证码为:<strong>" + randomNumber + @"</strong></p>
</body>
</html>";
//这是QQ的 SMTP 设置 网易邮箱需要修改
using (var client = new SmtpClient("smtp.qq.com", 587))
{
client.EnableSsl = true;
client.Credentials = new NetworkCredential("发送验证码的邮箱和上面一样", "授权码");
// 发送邮件
client.Send(mailMessage);
Console.WriteLine("邮件发送成功!");
}
}
//返回验证码
return randomNumber;
}
catch (System.Exception ex)
{
//可做错误处理 记录错误日志
//log(ex);
return "邮件发送失败:" + ex.Message;
}
}
在上述代码中,EmailSend方法用于发送验证码到用户的邮箱,并返回生成的验证码。在主函数中,我们调用该方法来发送验证码,并要求用户输入验证码进行验证。
[HttpPost]
public string a(string email)
{
EmaliSend e = new EmaliSend();
return e.emailsendone(email);
}
这是一个简单的 ASP.NET Core Web API 的控制器方法
POST请求 返回的是验证码
返回值和邮箱验证码可以对应
后面会用这个验证码+前端页面做缓存完成邮箱验证码登录。