C#实现邮件发送功能(包含定时功能)

前言

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中。

总结

到这里就算完成了定时发送邮件功能,改代码项目还包含了数据库查询以及包含邮件附件,想要全部代码的兄弟朋友们先点赞收藏,然后便可私信我获取源代码。

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值