C# 使用QQ邮箱发送邮件
发送原理,把邮件发送给smtp服务器,然后再由smtp服务器发送到邮箱。
1、微软已经帮我们封装好了发送邮件的类 MailMessage。MailMessage类构造一些邮件信息,然后通过SmtpClient进行邮件发送。
2、还需要用到SmtpClient类进行发送邮件。SmtpClient类的意思是:允许应用程序使用简单邮件传输协议 (SMTP) 来发送电子邮件。
3、代码
static void Main(string[] args) { //实例化一个发送邮件类。 MailMessage mailMessage = new MailMessage(); //发件人邮箱地址,方法重载不同,可以根据需求自行选择。 mailMessage.From = new MailAddress("123456@qq.com"); //收件人邮箱地址。 mailMessage.To.Add(new MailAddress("234567@qq.com")); //抄送人邮箱地址。 //message.CC.Add(sender); //邮件标题。 mailMessage.Subject = "发送邮件测试"; //邮件内容。 mailMessage.Body = "这是我给你发送的第一份邮件哦!"; //是否支持内容为HTML。 //mailMessage.IsBodyHtml = true; //实例化一个SmtpClient类。 SmtpClient client = new SmtpClient(); client.Port = 587; //在这里使用的是qq邮箱,所以是smtp.qq.com,如果你使用的是126邮箱,那么就是smtp.126.com。 //client.Host = "smtp.163.com"; client.Host = "smtp.qq.com"; //使用安全加密连接(是否启用SSL) client.EnableSsl = true; //设置超时时间 //client.Timeout = 10000; //不和请求一块发送。 client.UseDefaultCredentials = false; //验证发件人身份(发件人的邮箱,邮箱里的生成授权码); client.Credentials = new NetworkCredential("123456@qq.com", "你自己的qq邮箱授权码");//szcodirtgvjgbfii //网易邮箱客户端授权码DJURBEKTXEWXQATX //client.Credentials = new NetworkCredential("liulijun3236@163.com", "ZAJDNCKWHUBHQIMY"); try { //发送 client.Send(mailMessage); //发送成功 } catch (Exception)//发送异常 { //发送失败 //System.IO.File.WriteAllText(@"C:\test.txt", e.ToString(), Encoding.UTF8); } }
4、常见错误信息及解决办法。
在做此功能的过程中,遇到过好几个异常信息,到最后百度了一下,总算解决了,有些新人在做的过程中,或许不知道问题出在哪了,接下来我就说说我常见的错误及解决办法。
4.1、mail from address must be same as authorization user
一般出这种情况的原因有两种:
4.1.1、POP3/IMAP/SMTP未开启。
解决办法:进入qq邮箱- - - - -》设置- - - - -》账户- - - - -》然后找到POP3/IMAP/SMTP开启即可。
4.1.2、授权码错误。
解决办法:进入qq邮箱- - - - -》设置- - - - -》账户- - - - -》然后找到POP3/IMAP/SMTP开POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务下的生成授权码填上即可。
4.2、Error: need EHLO and AUTH first !
一般情况系出现这种错误原因是SmtpClient类的EnableSsl、UseDefaultCredentials属性放到了Credentials属性之下。
解决办法:将SmtpClient类的EnableSsl、UseDefaultCredentials属性放到了Credentials属性之上。
5、看看腾讯的官方设置说明,使用SSL,端口号465,但是如果按配置,总是提示超时。没办法,google了一把,发现端口号应该是587
6、端口内容详细看链接 https://stackoverflow.com/questions/15796530/what-is-the-difference-between-ports-465-and-587
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构