前言
C# 具备强大的邮件发送功能,能够借助 System.Net.Mail
命名空间下的类来处理邮件的发送、接收和转发。以下是 C# 发送邮件的详细教程,包含数据库连接和查询、邮件主题和正文的编写、表格附件的生成和定时功能的配置等。
一、概念介绍
SMTP(Simple Mail Transfer Protocol):简单邮件传输协议,用于发送电子邮件的传输协议
POP3(Post Office Protocol - Version 3):用于接收电子邮件的标准协议
IMAP(Internet Mail Access Protocol):互联网消息协议,是POP3的替代协议
二、准备工作及配置
1.SMTP 主机和端口:
不同邮箱服务商的 SMTP 主机名和端口不同:
1. Gmail:smtp.gmail.com,端口 587(STARTTLS)或 465(SSL)。
2. Outlook/Hotmail:smtp.office365.com,端口 587。
3. QQ 邮箱:smtp.qq.com,端口 587 或 465。
4. 163 邮箱:smtp.163.com,端口 25 或 465。
2. 授权码:
部分邮箱(如 Gmail、QQ)需要使用授权码代替密码。授权码可以在邮箱设置中获取。这里以QQ邮箱为例,我们要可以在安全设置中打开POP3/IMAP/SMTP服务以及查询授权码。
3. TLS 和 SSL:
1. STARTTLS 是一种升级现有不安全连接为加密连接的方式,常用于端口 587。
2. SSL 是直接建立加密连接的方式,常用于端口 465。
三、邮件发送功能实现
核心代码展示:
// 根据不同的域名设置 SMTP 服务器和端口
switch (domain)
{
case "126.com":
sct.Host = "smtp.126.com";
sct.Port = 25;
sct.EnableSsl = false;
break;
case "163.com":
sct.Host = "smtp.163.com";
sct.Port = 25;
sct.EnableSsl = false;
break;
case "qq.com":
sct.Host = "smtp.qq.com";
sct.Port = 587;
sct.EnableSsl = true;
break;
case "gmail.com":
sct.Host = "smtp.gmail.com";
sct.Port = 587;
sct.EnableSsl = true;
break;
case "outlook.com":
sct.Host = "smtp.office365.com";
sct.Port = 587;
sct.EnableSsl = true;
break;
case "hisemi.com.cn":
sct.Host = "smtp.qiye.aliyun.com";
sct.Port = 25;
sct.EnableSsl = true;
break;
} //邮件内容
class Program
{
public static string CONFIG_FORM = ""; //账号
public static string CONFIG_PWD = ""; //授权码
public static string CONFIG_TO = ""; //指定客户收件邮箱
public static string CONFIG_SUBJECT = ""; //邮件主题
static void Main()
{
try
{
// 获取用户输入
//Console.Write("请输入发件人邮箱: ");
//string from = Console.ReadLine();
//Console.Write("请输入发件人邮箱密码: ");
//string pwd = Console.ReadLine();
//Console.Write("请输入收件人邮箱: ");
//string to = Console.ReadLine();
//Console.Write("请输入邮件主题: ");
//string subject = Console.ReadLine();
List<Result> results = OracleDBHelper.ExecuteQuery("SELECT * FROM JW_ITEM_V jiv");
//数据库查询语句
string v = Util.ExportListToExcel(results);
//Console.Write("请输入邮件正文: ");
//string body = Console.ReadLine();
//string body = "";
邮件正文
//foreach (var item in results)
//{
// body = body + string.Join("-", item.R) + "\n";
//}
// 创建邮件消息
MailMessage mms = new MailMessage();
mms.From = new MailAddress(CONFIG_FORM);
mms.To.Add(CONFIG_TO);
mms.To.Add("yaoshangyong@hisemi.com.cn"); // 使用mms.To.Add("邮箱地址")语句添加收件人
mms.To.Add("czmk13@hisemi.com.cn"); // 使用mms.To.Add("邮箱地址")语句添加收件人
// mms.Body = Util.GetHtmlContent(results);
mms.Body = "";
四、定时功能的部署
1.使用快捷键WIN+R打开“运行”对话框,输入taskschd.msc后按回车键,打开任务计划程序。
2.创建一个基本任务,选择定时的具体时间。
3.选择启动程序,找到自动生成的exe程序,目标地址一般在bin>Debug中。
总结
到这里就算完成了定时发送邮件功能,改代码项目还包含了数据库查询以及包含邮件附件,想要全部代码的兄弟朋友们先点赞收藏,然后便可私信我获取源代码。