QQ登录

只需要一步,快速开始

APP扫码登录

只需要一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 1011|回复: 0

[C#/.NET] C#使用 System.Net.Mail 发送邮件功能

[复制链接]

等级头衔

积分成就    金币 : 2851
   泡泡 : 1516
   精华 : 6
   在线时间 : 1305 小时
   最后登录 : 2024-12-7

丰功伟绩

优秀达人突出贡献荣誉管理论坛元老活跃会员

联系方式
发表于 2023-1-23 13:54:13 | 显示全部楼层 |阅读模式
一、介绍" {, y: E8 l% L4 S9 ^9 A7 B1 i
       System.Net.Mail命名空间是在.NET Framework中新增的,该命名空间提供了发送电子邮件的功能。通过对本章的学习,读者可以轻松地使用.NET Framework提供的类库来发送电子邮件。System.Net.Mail 命名空间包含用于将电子邮件发送到SMTP服务器的类,这些类需要结合Microsoft SMTP Server一起使用。
8 e: N* F9 M9 ], {4 u( `. |% p       System.Net.Mail 命名空间下有SmtpClient类用于发送邮件,可以完全代替SmtpMail类。利用SmtpClient类的Send方法可以完成发送电子邮件的传 输,也可以用SendAsync方法进行异步发送,后者发送完成后会产生一个SendCompleted 事件来通知发送结果。Send方法可以接受MailMessage类的对象作为参数。通过MailMessage类可以设置邮件更多的内容和格式,例如,为 Attachment类设置添加附件的参数。" z2 w/ c+ O. p* l; Q
       SmtpClient 类与SMTP结合在一起,通过MailMessage类、MailAddress类、Attachment类来丰富电子邮件的内容和设置。图18-2展示 了用户通过System.Net.Mail命名空间下的类结合SMTP发送电子邮件的过程。
( l$ a. n( Y( ]1 n5 a# f二、SmtpClient类的语法定义如下:
5 p, `+ U, _- wpublic class SmtpClient
5 S3 F7 ?* ~3 E9 x4 o) m& K! \下面的代码演示如何创 建一个SmtpClient的实例。
/ Z. ?1 B7 v: h6 uSmtpClient  client = new SmtpClient (“smtp.Sina.com”); //直接通过构造函数设置SMTP 主机服务器2 |% B- |+ N% r) y( Q$ t
或:" z8 s2 e( M0 H+ ~* B$ K
SmtpClient  client = new SmtpClient ();3 {8 C4 v9 D8 M/ a' Y; n& S7 j5 x
Client. Host =” smtp.Sina.com”; //通过Host属性来设置SMTP 主机服务器
: s, m- O2 d. A% t" G三、完整代码
/ J7 \. F, ~# b) M* d
  /// <summary>
    /// 邮件处理器
    /// </summary>
    public class MailHandler
    {
        private MailMessage _mailMessage;
        private string _host;
        private string _userName;
        private string _password;

        public MailHandler()
        {
        }

        /// <summary>
        /// 设置邮件信息
        /// </summary>
        /// <param name="subject">主体</param>
        /// <param name="body">内容</param>
        /// <param name="from">发件人</param>
        /// <param name="to">收件人</param>
        /// <param name="cc">抄送人</param>
        /// <param name="bcc">密件抄送人</param>
        /// <param name="isBodyHtml">内容是否为Html</param>
        public void SetMailMessage(string subject, string body, string from, string[] to, string[] cc, string[] bcc, bool isBodyHtml = true)
        {
            _mailMessage = new MailMessage();
            _mailMessage.Subject = subject;
            _mailMessage.Body = body;
            _mailMessage.IsBodyHtml = isBodyHtml;

            _mailMessage.From = new MailAddress(from);
            if (to != null)
            {
                foreach (var item in to)
                {
                    _mailMessage.To.Add(item);
                }
            }
            if (cc != null)
            {
                foreach (var item in cc)
                {
                    _mailMessage.CC.Add(item);
                }
            }
            if (bcc != null)
            {
                foreach (var item in bcc)
                {
                    _mailMessage.Bcc.Add(item);
                }
            }

            _mailMessage.BodyEncoding = System.Text.Encoding.UTF8;
        }

        /// <summary>
        /// 配置Smtp服务主机及身份验证
        /// </summary>
        /// <param name="host">Smtp主机名或Ip</param>
        /// <param name="userName">用户名</param>
        /// <param name="password">密码</param>
        public void SetSmtp(string host, string userName, string password)
        {
            this._host = host;
            this._userName = userName;
            this._password = password;
        }

        /// <summary>
        /// 发送邮件
        /// </summary>
        public void Send()
        {
            using (var sc = new SmtpClient())
            {
                sc.Host = _host;
                sc.Port = 25;
                sc.DeliveryMethod = SmtpDeliveryMethod.Network;
                sc.Credentials = new System.Net.NetworkCredential(_userName, _password);
                sc.Send(_mailMessage);
            }
        }

        public string SendMail(string title, string content)
        {
            var smptHost = ConfigHelper.GetAppSetting("SmtpHost");
            var userName = ConfigHelper.GetAppSetting("MailUserName");
            var password = ConfigHelper.GetAppSetting("MailPassword");
            var mailToAddress = ConfigHelper.GetAppSetting("MailAddress").Split(',');

            if (string.IsNullOrWhiteSpace(smptHost))
            {
                return "SmtpHost为空";
            }
            if (string.IsNullOrWhiteSpace(userName))
            {
                return "发件人为空";
            }
            if (string.IsNullOrWhiteSpace(password))
            {
                return "发件人密码为空";
            }
            if (mailToAddress.Length == 0)
            {
                return "收件人列表为空";
            }

            var mailContent = @"<html><head><title>邮件内容</title></head>
                                <body>" + content + "</body></html>";

            SetSmtp(smptHost, userName, password);
            SetMailMessage(title, mailContent, userName, mailToAddress, null, null);

            try
            {
                Send();
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            return null;
        }
    }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|paopaomj.COM ( 渝ICP备18007172号|渝公网安备50010502503914号 )

GMT+8, 2024-12-7 04:20

Powered by paopaomj X3.5 © 2016-2025 sitemap

快速回复 返回顶部 返回列表