C#—发送QQ邮件
QQ邮箱实现发送验证码
1、开启POP3/SMTP服务
按照提示开启服务,发送短信,然后生成授权码。
这里的授权码可以有多个,在生成的时候记得保存在本地,后面代码中会用到。
2、代码实现
完成邮件的发送,得使用两个微软封装的类:MailMessage和SmtpClient
MailMessage用来封装邮件的内容,SmtpClient使用简单邮件传输协议 (SMTP) 来发送电子邮件
2.1 配置信息(发送邮件所需要的信息)
string mailFrom ="zhangsan@qq.com" ; //发件人
string mailTo ="lisi@qq.com"; //收件人
string Subject = "【注册验证码】"; //邮件主题
string Content = "您的注册验证码为:331154。30分钟内有效,请勿泄露给他人!"; //邮件内容
string Host = "smtp.qq.com"; //SMTP服务器 这里写的是QQ邮箱
string userPassword = "jqfifuhqsvombedd"; //授权码
2.2 通过MailMessage设置邮件内容
参考:MailMessage 类 (System.Net.Mail) | Microsoft Learn
//初始化发件人
MailAddress from =new MailAddress(mailFrom);
//初始化收件人
MailAddress to =new MailAddress(mailTo);
//设置邮箱内容
MailMessage mailMsg=new MailMessage(from ,to); //这里是调用了MailMessage类的重载构造函数
mailMsg.Body=Content; //邮件内容
mailMsg.BodyEncoding=Encoding.UTF8; //设置邮件内容编码
mailMsg.Subject =Subject; //邮件主题(标题)
mailMsg.SubjectEncoding = Encoding.UTF8; //设置标题编码
mailMsg.IsBodyHtml = true; //确定邮件是否支持HTML格式
2.3 配置SmtpClient发送邮件
参考:SmtpClient 类 (System.Net.Mail) | Microsoft Learn
参考:NetworkCredential 类 (System.Net) | Microsoft Learn
SmtpClient client =new SmtpClient(Host); //实例化Smtp对象,这里是它的第二重载构造
client.EnableSsl=true; //是否使用安全套接字层 (SSL) 加密连接。
client.UseDefaultCredentials=false ; //是否SmtpClient默认的凭证
//设置新的凭证 new NetworkCredential(发件人邮箱, 授权码);
client.Credentials=new NetworkCredential(mailFrom,userPassword);
然后就可以发送了,调用Send()方法:
client.Send(mailMsg);
3、总结
- 在发送邮件之前需要开启pop/smtp服务以及获取授权码
- 了解MailMessage和SmtpClient的使用
4、遇到的问题
Bad sequence of commands. The server response was: Error: need EHLO and AUTH
//命令顺序错误。服务器响应为:错误:需要EHLO和AUTH
我相信,大概很多人在编写这个功能的时候遇到的都是这个问题。刚好,我也遇到了。
解决方法:
- 查看你配置的基本信息是否正确,如发件人,收件人的信息不正确。导致发送不了请求。
- 授权码,一个发件人对应一个授权码,其中任意一个信息不存在都会导致请求错误。
- 你的服务没有开启。之前我就因为发送邮件的时候安全性问题导致了QQ退出,然后登录后才发现自动关闭了
POP3/SMTP服务

浙公网安备 33010602011771号