C#使用简单邮件传输协议(SMTP)发送邮件

1、首先引入命名空间:

using System.Net.Mail;

2、定义邮件配置类:

    public class EmailServiceConfig
    {
        /// <summary>
        /// 服务地址。
        /// </summary>
        public String ServiceAddress { get; set; }

        /// <summary>
        /// 端口号。
        /// </summary>
        public Int32 Port { get; set; }

        /// <summary>
        /// 发件人名。
        /// </summary>
        public String DisplayName { get; set; }

        /// <summary>
        /// 用户名。
        /// </summary>
        public String Username { get; set; }

        /// <summary>
        /// 密码。
        /// </summary>
        public String Password { get; set; }
    }
View Code

3、定义邮件内容类:

    public class EmailMessage
    {
        /// <summary>
        /// 邮件接收人
        /// </summary>
        public String[] Receivers { get; set; }

        /// <summary>
        /// 邮件抄送人
        /// </summary>
        public String[] CC { get; set; }

        /// <summary>
        /// 邮件主题
        /// </summary>
        public String Subject { get; set; }

        /// <summary>
        /// 邮件正文
        /// </summary>
        public String Content { get; set; }
    }
View Code

4、定义邮件帮助类:

    public class EmailHelper
    {
        /// <summary>
        /// 配置
        /// </summary>
        private EmailServiceConfig _config;

        private SmtpClient _client = new SmtpClient();

        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="message"></param>
        public void Send(EmailMessage message)
        {
            MailMessage mailMessage = new MailMessage();
            mailMessage.From = new MailAddress(_config.Username, _config.DisplayName);
            message.Receivers.ToList().ForEach(c => mailMessage.To.Add(c));
            message.CC.ToList().ForEach(c => mailMessage.CC.Add(c));
            mailMessage.Subject = message.Subject;
            mailMessage.IsBodyHtml = true;
            mailMessage.Body = message.Content;
            mailMessage.BodyEncoding = Encoding.UTF8;
            mailMessage.Priority = MailPriority.High;
            _client.Send(mailMessage);
        }

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="config"></param>
        public EmailHelper(EmailServiceConfig config)
        {
            if (config == null)
            {
                throw new Exception("配置不能为空。");
            }
            if (string.IsNullOrEmpty(config.ServiceAddress))
            {
                throw new Exception("服务地址不能为空。");
            }
            if (string.IsNullOrEmpty(config.Username))
            {
                throw new Exception("用户名不能为空。");
            }
            if (string.IsNullOrEmpty(config.Password))
            {
                throw new Exception("密码不能为空。");
            }

            _config = config;
            _client = new SmtpClient(config.ServiceAddress,config.Port);
            _client.UseDefaultCredentials = false;
            _client.EnableSsl = false;
            _client.Credentials = new System.Net.NetworkCredential(config.Username, config.Password);
            _client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
        }
    }
View Code

5、调用帮助类发送邮件:

        private static void Main(string[] args)
        {
            try
            {
                // 初始化配置
                var config = new EmailServiceConfig()
                {
                    ServiceAddress = "smtp.qq.com",
                    Port = 25,
                    DisplayName = "发件人名",
                    Username = "123@qq.com",
                    Password = "******"
                };

                //初始化邮件内容
                var message = new EmailMessage()
                {
                    Receivers = new string[] { "abcd@qq.com" },
                    CC = new string[] { "xyz@qq.com" },
                    Subject = "这里是邮件主题",
                    Content = "这里是邮件内容"
                };

                //实例邮件帮助类并发送邮件
                var emailHelper = new EmailHelper(config);
                emailHelper.Send(message);

                Console.WriteLine("发送成功!");
            }
            catch (Exception ex)
            {
                Console.WriteLine("发送失败!");
                Console.WriteLine("错误信息:" + ex.Message);
            }

            Console.ReadLine();
        }
View Code
原文地址:https://www.cnblogs.com/zhuyongblogs/p/5210460.html