如何使用C#来发送QQ邮件
视频演示如下:
源码下载:
链接:https://pan.baidu.com/s/1ZWB07iR0ZFtL7GudOz1wDw
提取码:9nfv
主要功能代码如下:
using System.Net;
using System.Net.Mail;
using System.Text;
using System;
using System.Windows.Forms;
using System.Configuration;
namespace WindowsFormsApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 发送
/// </summary>
/// <param name="mailFrom">发件人邮箱,例123@qq.com</param>
/// <param name="mailTo">收件人邮箱,例456@qq.com</param>
/// <param name="token">QQ邮箱POP3/SMTP服务的授权码</param>
/// <param name="subject">邮件标题</param>
/// <param name="body"> 邮件内容</param>
/// <returns></returns>
public bool SendMail(string mailFrom, string mailTo, string token, string subject, string body)
{
// 邮件服务设置
SmtpClient smtpClient = new SmtpClient();
// 指定电子邮件发送方式
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
// 指定SMTP服务器
smtpClient.Host = "smtp.qq.com";
// 使用安全加密连接(是否启用SSL)
smtpClient.EnableSsl = true;
// 不和请求一块发送。
smtpClient.UseDefaultCredentials = false;
// 用户名和密码
smtpClient.Credentials = new NetworkCredential(mailFrom, token);
// 发送人和收件人
MailMessage mailMessage = new MailMessage(mailFrom, mailTo);
// 主题
mailMessage.Subject = subject;
// 内容
mailMessage.Body = body;
// 正文编码
mailMessage.BodyEncoding = Encoding.UTF8;
// 设置为HTML格式
mailMessage.IsBodyHtml = true;
// 优先级
mailMessage.Priority = MailPriority.Low;
try
{
// 发送邮件
smtpClient.Send(mailMessage);
return true;
}
catch (SmtpException ex)
{
//打印错误
Console.WriteLine(ex.ToString());
return false;
}
}
private void button1_Click(object sender, EventArgs e)
{
//SendMail("发件人邮箱", "收件人邮箱", "授权码", "这是我的标题", "这是我的内容");
String token = ConfigurationManager.AppSettings["token"];
SendMail("***@qq.com", "***@qq.com", token, "这是我的标题", "这是我的内容");
}
}
}
App.config配置文件格式如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<appSettings>
<add key="token" value="123456" />
</appSettings>
</configuration>
QQ邮箱POP3/SMTP服务的授权码获取方式如下:
进入邮箱,然后:设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”,开启“POP3/SMTP服务”

然后直接按照提示,发送短信,获取授权码即可。
测试结果如下:

补充内容:
群里一个大佬提供的163邮箱的发送代码,没试过,也不知道能不能用:
/// <summary>
/// 发送邮件
/// </summary>
/// <param name="mailTo">发送给什么邮箱</param>
/// <param name="mailVerify"></param>
private void SendVerifyMail(string mailTo, string mailVerify)
{
SmtpClient client = new ("smtp.163.com");
MailAddress from = new (_configuration["EmailAccount"], "葱葱图库", Encoding.UTF8);
MailAddress to = new (mailTo, mailTo, Encoding.UTF8);
MailMessage message = new (from, to);
message.Subject = "葱葱图库验证信息"; //标题
message.SubjectEncoding = Encoding.UTF8;
message.Body = $"您正在修改葱葱图库的登录密码, 验证码为:{mailVerify} , 24小时内有效"; //内容
message.BodyEncoding = Encoding.UTF8;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
message.IsBodyHtml = false;
client.EnableSsl = false;
client.UseDefaultCredentials = false;
NetworkCredential credentials = new(_configuration["EmailAccount"], _configuration["EmailPassword"]); //发送者的账号和密码
client.Credentials = credentials;
client.Send(message);
}