前言
通过邮箱获取验证码验证身份是现今多个服务平台的主流验证方式。本文适合对C#不了解或者不大了解的人群浏览。本文的C#做法可能会有点傻但是完全不影响大碍。
预览效果



二、主要步骤
1.引用
using System.Net.Mail;
using System.Net;
2.随机数生成
label3是随意放置的一个控件,隐藏起即可
private void Form1_Load(object sender, EventArgs e)
{
Random rd = new Random();
label3.Text = Convert.ToString(rd.Next(100000, 999999));//6位数
}
3.邮箱发送验证码
!务必开启邮箱内的IMAP/SMTP服务,否则会显示下列提示!
命令顺序不正确。服务器响应为:Error: need EHLO and AUTH first !
//实例化一个发送邮件类
MailMessage mailMessage = new MailMessage();
//发件人邮箱地址,方法重载不同,可以根据需求自行选择
mailMessage.From = new MailAddress("收件人@qq.com");
//收件人邮箱地址
mailMessage.To.Add(new MailAddress(textBox1.Text));//不能为空,或更改为邮箱
//邮件标题
mailMessage.Subject = "邮件标题";
//邮件内容
mailMessage.Body = "你的验证码是" + label3.Text;
//实例化一个SmtpClient类
SmtpClient client = new SmtpClient();
//在这里我使用的是qq邮箱,所以是smtp.qq.com,如果你使用的是126邮箱,那么就是smtp.126.com
client.Host = "smtp.qq.com";
//使用安全加密连接
client.EnableSsl = true;
//不和请求一块发送
client.UseDefaultCredentials = false;
//验证发件人身份(发件人的邮箱,邮箱里的生成授权码(授权码通过开启IMAP/SMTP服务后自动生成))
client.Credentials = new NetworkCredential("发件人@qq.com", "授权码");
//发送
client.Send(mailMessage);//在QQ邮箱内开启IMAP/SMTP服务
MessageBox.Show("成功发送!", "提示");
整体
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Mail;
using System.Net;
namespace Dsearch
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
Random rd = new Random();
label3.Text = Convert.ToString(rd.Next(100000, 999999));
}
private void button1_Click(object sender, EventArgs e)
{
//实例化一个发送邮件类。
MailMessage mailMessage = new MailMessage();
//发件人邮箱地址,方法重载不同,可以根据需求自行选择
mailMessage.From = new MailAddress("收件人@qq.com");
//收件人邮箱地址
mailMessage.To.Add(new MailAddress(textBox1.Text));//不能为空,或更改为邮箱
//邮件标题
mailMessage.Subject = "身份验证";
//邮件内容
mailMessage.Body = "这里是你的验证码:" + label3.Text;
//实例化一个SmtpClient类
SmtpClient client = new SmtpClient();
//在这里我使用的是qq邮箱,所以是smtp.qq.com,如果你使用的是126邮箱,那么就是smtp.126.com
client.Host = "smtp.qq.com";
//使用安全加密连接
client.EnableSsl = true;
//不和请求一块发送
client.UseDefaultCredentials = false;
//验证发件人身份(发件人的邮箱,邮箱里的生成授权码)
client.Credentials = new NetworkCredential("收件人@qq.com", "授权码");
//发送
client.Send(mailMessage);//在QQ邮箱内开启IMAP/SMTP服务
MessageBox.Show("已成功发送。请等待约3秒以获取验证码!", "提示");
}
private void button3_Click(object sender, EventArgs e)
{
if (textBox2.Text == label3.Text)
{
MessageBox.Show("欢迎!");
button2.Enabled = true;
}
else
{
MessageBox.Show("您的验证码错误了!");
textBox1.Clear();
textBox2.Clear();//清空
}
}
}
}
!务必开启邮箱内的IMAP/SMTP服务,否则会显示下列提示!
命令顺序不正确。服务器响应为:Error: need EHLO and AUTH first !
引用文章
关于QQ邮箱“命令顺序不正确。 服务器响应为:Error: need EHLO and AUTH first !”问题 原文
C#实现向邮箱发送验证码 原文
2081

被折叠的 条评论
为什么被折叠?



