C# 发送邮件

前言

本文简单的通过C#的SmtpClient实现发送邮件的功能。

实现

using System.Net.Mail;
using System.Net;

namespace Test
{
    public class SendMail
    {
        private SmtpClient _emailClient;
        
        public class UserInfo {
            public string Email { get; set; } // 用户的邮箱
            public string DisplayName { get; set; } // 用户的显示名称
        }
        
        /// 
        /// 发送邮件(邮件主题,邮件内容,接收人,抄送人,密送人,附件)
        /// 
        public string SendMail(
            string subject,
            string body,
            ICollection<UserInfo> tos,
            ICollection<UserInfo>? ccs = null,
            ICollection<UserInfo>? bccs = null,
            ICollection<Attachment>? attachments = null)
        {

            // 设置smtp配置信息(以QQ邮箱为例)
            string host = "smtp.qq.com"; // 邮件服务器
            int port = 587; // 端口号
            bool enableSsl = true; // 是否开启ssl
            string username = "yourqqemail"; // 你的邮箱
            string password = "yourpassword"; // 你的邮箱授权码
            string senderAddress = "yourqqemail";// 你的邮箱
            string senderDisplayName = "test"; // 发件人那里展示的名字

            // 实例化smtp服务器
            _emailClient = new SmtpClient
            {
                // 配置好服务器地址,端口和ssl,使用账密验证
                Host = host,
                Port = port,
                EnableSsl = enableSsl,
                Credentials = new NetworkCredential { UserName = username, Password = password }
            };
            MailMessage message = new()
            {
                // 设置邮件发送人
                From = new MailAddress(senderAddress, senderDisplayName) 
            };

            // 接收人
            foreach (UserInfo user in tos)
            {
                message.To.Add(new MailAddress(user.Email, user.DisplayName));
            }
            // 抄送人
            if (ccs != null)
            {
                foreach (UserInfo user in ccs)
                {
                    message.CC.Add(new MailAddress(user.Email, user.DisplayName));
                }
            }
            // 密送人
            if (bccs != null)
            {
                foreach (UserInfo user in bccs)
                {
                    message.Bcc.Add(new MailAddress(user.Email, user.DisplayName));
                }
            }
            // 附件
            if (attachments != null)
            {
                foreach (Attachment attachment in attachments)
                {
                    message.Attachments.Add(attachment);
                }
            }
            // 主题/内容/是否是html/默认优先级
            message.Subject = subject;
            message.Body = body;
            message.IsBodyHtml = true;
            message.Priority = MailPriority.Normal;

            try
            {
                _emailClient.Send(message);
                return "邮件发送成功";
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }
    }
}

你可能感兴趣的:(c#)