这篇文章主要介绍了C#发送邮件的方法,本文以QQ邮箱为例。在程序开发中通常有推送消息的需求,通常为短信服务,邮件,电话提醒。短信及电话提醒通常需要向运营商购买服务调用接口,比较麻烦。邮件信息推送是不错的选择,下面使用System.Net.Mail来实现邮件发送;在贴代码之前,首先需要给QQ邮箱开服务IMAP/SMTP服务,详细开通方法见 开通方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Text;
using System.Threading.Tasks;

namespace blog_email
{
    public class EmailHelper
    {
        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="info"></param>
        public static void SendEmail(SendMailInfo info)
        {
            try
            {
                //发送电子邮件类
                MailMessage mail = new MailMessage();
                //添加收件人
                foreach (string item in info.Addressee)
                {
                    mail.To.Add(item);
                }
                //添加抄送
                foreach (string item in info.CC)
                {
                    mail.CC.Add(item);

                }
                //邮件主题
                mail.Subject = info.Theme;
                //邮件标题编码
                mail.SubjectEncoding = info.SubjectEncoding;
                //发件信息
                mail.From = new MailAddress(info.From, info.DisplayName, info.SubjectEncoding);

                //邮件内容
                mail.Body = info.Body;
                //邮件内容编码
                mail.BodyEncoding = info.BodyEncoding;
                //是否是HTML邮件
                mail.IsBodyHtml = info.IsBodyHtml;
                //邮件优先级
                mail.Priority = info.Priority;

                //SMTP协议
                SmtpClient smtp = new SmtpClient();
                //是否使用SSL安全加密  使用QQ邮箱必选
                smtp.EnableSsl = info.EnableSsl;
                smtp.UseDefaultCredentials = info.UseDefaultCredentials;

                //验证发件人信息
                smtp.Credentials = new NetworkCredential(info.From, info.Password);
                //开始发送
                smtp.Send(mail);

            }
            catch (Exception e)
            {
                throw e;
            }

        }
    }
    public class SendMailInfo
    {
        public string From { get; set; }//发件人地址
        public string Password { get; set; }//密码
        public string[] Addressee { get; set; }//收件人地址
        public string[] CC { get; set; }//抄送
        public string Theme { get; set; }//主题
        public string DisplayName { get; set; }//发件人名称
        public Encoding SubjectEncoding { get; set; }//编码
        public string Body { get; set; }//邮件内容
        public Encoding BodyEncoding { get; set; }//邮件内容编码
        public bool IsBodyHtml { get; set; }//是否HTML邮件
        public MailPriority Priority { get; set; }//邮件优先级
        public bool EnableSsl { get; set; }//是否ssl
        public bool UseDefaultCredentials { get; set; }
    }
}

调用示例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace blog_email
{
    class Program
    {
        static void Main(string[] args)
        {
            EmailHelper.SendEmail(new SendMailInfo()
            {
                Addressee = new string[] { "[email protected]" },
                Body = "这是邮件正文",
                BodyEncoding = Encoding.UTF8,
                CC = new string[] { },
                DisplayName = "测试邮件",
                EnableSsl = true,
                From = "[email protected]",
                IsBodyHtml = false,
                Password = "123456",
                Priority = System.Net.Mail.MailPriority.High,
                SubjectEncoding = Encoding.UTF8,
                Theme = "邮件主题",
                UseDefaultCredentials = false
            });
        }
    }


}
最后修改:2022 年 11 月 26 日
如果觉得我的文章对你有用,请随意赞赏