C#使用QQ邮箱发送邮件

本文介绍了如何在C#中使用System.Net.Mail命名空间的类,如MailMessage、SmtpClient等,通过QQ邮箱发送邮件,包括获取授权码、创建EmailUtil工具类并实现邮件发送功能。
摘要由CSDN通过智能技术生成

简介

在c#中发送邮箱我们只需要引入官方提供的命名空间 System.Net.Mail ,这个命名空间包含了一系列类,用于创建、配置和发送电子邮件消息。

这个命名空间中的一些主要类包括:

  1. MailMessage:表示一个电子邮件消息,包含发件人、收件人、抄送、密送、主题、正文等信息。
  2. SmtpClient:用于发送电子邮件的客户端,可以配置 SMTP 服务器地址、端口、用户名和密码等。
  3. Attachment:表示电子邮件附件,可以设置附件的文件名、内容类型等。
  4. AlternateView:表示电子邮件的另一种视图,例如 HTML 格式的邮件正文。
  5. LinkedResource:表示电子邮件中的链接资源,例如图片。
  6. MailAddress:表示电子邮件地址,包含姓名和电子邮件地址。

下面我们来演示如何使用自己的qq邮箱来给别人发送邮件

获取qq邮箱授权码 

点击链接,登录后点击右上角头像,点击设置

 在常规General找到第三方服务Third-party Services 点击Generate Authorization Code生成授权码

点击Generate Authorization Code后会生成一个二维码,用手机微信扫描之后会自动打开短信帮你编辑好信息,点击发送短信,然后回到网页中点击SMS Sent

然后会自动跳转到下面页面,中间这个就是你当前邮箱的授权码了,把这个授权码保存好,我们发送邮件需要用到

 邮件发送工具类

创建一个EmailUtil类,将下面代码copy进去,输入自己的邮箱与授权码

using System.Net.Mail;

namespace ConsoleApp1;

/// <summary>
/// 邮件发送工具类
/// </summary>
public static class EmailUtil
{
    
    //填写你自己需要设置的发件人邮箱
    private static string MyEmail = "替换成你的邮箱";
    //发件人邮箱授权码
    private static string MyKey = "替换成刚刚生成的授权码";
    
    /// <summary>
    /// 发送邮件
    /// </summary>
    /// <param name="strMailText">邮件内容</param>
    /// <param name="strTitle">标题</param>
    /// <param name="to">收件人(多人用;隔开)</param>
    /// <param name="cc">抄送(多人用;隔开)</param>
    /// <param name="bcc">密抄(多人用;隔开)</param>
    /// <returns></returns>
    

    public static string NetSendEmail(string strMailText, string strTitle, string to, string cc = "", string bcc = "")
    {
        try
        {
            List<string> toList = to.Split(';').ToList();
            List<string> ccList = cc.Split(';').ToList();
            List<string> bccList = bcc.Split(';').ToList();
            return NetSendEmail(strMailText, strTitle, toList, ccList, bccList);
        }
        catch (Exception ex)
        {
            return ex.Message;
        }
    }

    /// <summary>
    /// 发送邮件
    /// </summary>
    /// <param name="strMailText"></param>
    /// <param name="strTitle"></param>
    /// <param name="to">收件人</param>
    /// <param name="cc">抄送</param>
    /// <param name="bcc">密抄</param>
    /// <returns></returns>
    public static string NetSendEmail(string strMailText, string strTitle, List<string> to, List<string> cc,
        List<string> bcc = null, string path = "")
    {
        try
        {
            System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage();
            mailMessage.Subject = strTitle;
            mailMessage.Body = strMailText;
            mailMessage.From = new System.Net.Mail.MailAddress(MyEmail);
            if (to == null || to.Count == 0)
            {
                return "请填写收件人";
            }

            foreach (string semail in to)
            {
                if (!string.IsNullOrEmpty(semail))
                {
                    mailMessage.To.Add(semail);
                }
            }

            foreach (string semail in cc)
            {
                if (!string.IsNullOrEmpty(semail))
                {
                    mailMessage.CC.Add(semail);
                }
            }

            if (bcc != null)
            {
                foreach (string semail in bcc)
                {
                    if (!string.IsNullOrEmpty(semail))
                    {
                        mailMessage.Bcc.Add(semail);
                    }
                }
            }

            mailMessage.Priority = System.Net.Mail.MailPriority.Normal;
            mailMessage.IsBodyHtml = true;
            System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient();
            smtpClient.Port = 25;

            // 填写你自己需要设置的发件人邮箱, 以及授权码
            smtpClient.Credentials = new System.Net.NetworkCredential(MyEmail, MyKey);
            smtpClient.Host = "smtp.qq.com";
            if (!string.IsNullOrEmpty(path))
            {
                mailMessage.Attachments.Add(new Attachment(path));
            }

            smtpClient.Send(mailMessage);
            return "";
        }
        catch (Exception ex)
        {
            return ex.Message;
        }
    }
}

发送邮件

在main方法中引用我们刚刚创建的静态工具类,如下代码,第一个参数是邮件内容,第二个参数是邮件标题,第三个参数是邮件的收件人。第四五个参数是抄送和密抄(我没这么多邮箱,就不演示了)

class Program
{
    public static void Main(string[] args)
    {
        EmailUtil.NetSendEmail($"HelloWord!!!", "邮件标题",
            "替换成收件人邮箱");
    }
}

 我把收件人邮箱换成我的另一个邮箱,执行代码。另一个邮箱收到了邮件,如下👇

 

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃香蕉的阿豪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值