zoukankan      html  css  js  c++  java
  • C# 实现邮件发送功能(使用SMTP)封装类源码

       使用SMTP服务器发送邮件  首先需要在自己的邮箱中开启这个服务并得到授权码如下( 这是163邮箱 ):

         

    •   主要三个类:

        SmtpClient //SMTP发邮件类
        MailMessage sendmessage;//邮件类

    •  发件步骤:
    1. 设置发件类    
    smpt = new SmtpClient(smptstr);//以SMTP 事务的主机的名称或 IP 地址创建对象
    smpt.UseDefaultCredentials = true;//使用默认凭据
    smpt.Credentials = new NetworkCredential(id, pwd);//凭证
    smpt.EnableSsl = true; //启用ssl,也就是安全发送
    

             2. 设置邮件类

     this.sendadress = new MailAddress(Sendadress);//根据地址字符串生成地址对象
     this.sendmessage = new MailMessage();
     this.sendmessage.From = sendadress;//设置邮件对象的发送地址
    

      3.添加收件人、邮件标题、邮件内容、邮件附件

      4.发送邮件

    • 邮件发送类(可多人发送 添加多个附件)
        public class SendEmail
        {
            NetworkCredential evidence;//发件邮箱的登陆凭证
            SmtpClient smpt;//SMTP 事务的主机的名称或 IP 地址
            MailAddress sendadress; //发件地址对象
            MailMessage sendmessage;//邮件对象
    
    
            string emailStr = @"([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,5})+"; //邮箱正则表达式对象
            string fileStr = @"^[a-zA-Z]:(((\(?! )[^/:*?<>""|\]+)+\?)|(\)?)s*$";//文件路径正则表达式对象
            /// <summary>
            /// 邮件标题
            /// </summary>
            public string Emailhead { get; set; }
            /// <summary>
            /// 邮件主体信息
            /// </summary>
            public string Emailbody { get; set; }
            /// <summary>
            /// 设置发件邮箱的相关信息
            /// </summary>
            /// <param name="Sendadress">发件地址</param>
            /// <param name="id">SMTP服务登陆账号</param>
            /// <param name="pwd">授权码</param>
            /// <param name="smpt">SMTP 事务的主机的名称或 IP 地址</param>
            public SendEmail(string Sendadress, string id, string pwd, string smptstr)
            {
                if (!CheckEmailAdress(Sendadress))
                    throw new Exception("错误的邮箱地址");
                this.sendadress = new MailAddress(Sendadress);//根据地址字符串生成地址对象
    
                this.sendmessage = new MailMessage();
                this.sendmessage.From = sendadress;//设置邮件对象的发送地址
    
                smpt = new SmtpClient(smptstr);
                smpt.UseDefaultCredentials = true;//使用默认凭据
                smpt.Credentials = new NetworkCredential(id, pwd);
                smpt.EnableSsl = true; //启用ssl,也就是安全发送
            }
            /// <summary>
            /// 添加收件人
            /// </summary>
            /// <param name="goaladress">收件地址</param>
            /// <returns></returns>
            public bool AddGoalAdress(string goaladress)
            {
                //验证字符串是否是有效的邮箱地址
                if (!CheckEmailAdress(goaladress))
                    return false;
                sendmessage.To.Add(goaladress);
                return true;
            }
            public bool AddFile(string filepath)
            {
                Regex fileReg = new Regex(fileStr);
                //验证字符串是否是有效的文件地址
                if (!fileReg.IsMatch(filepath) || !File.Exists(filepath))
                {
                    throw new Exception("错误的文件地址格式或者文件不存在");
                }
    
                sendmessage.Attachments.Add(new Attachment(filepath.Replace('\', '/')));
                return true;
            }
            public bool Send()
            {
                if (sendmessage.To.Count == 0)
                    return false;
                try
                {
                    sendmessage.Subject = Emailhead;
                    sendmessage.Body = Emailbody;
                    smpt.Send(sendmessage);
                    return true;
                }
                catch (Exception ex)
                {
                    throw ex;
                    //return false;
                }
            }
            /// <summary>
            /// 验证字符串是否是有效的邮箱地址
            /// </summary>
            /// <param name="address">地址字符串</param>
            /// <returns></returns>
            public bool CheckEmailAdress(string address)
            {
                Regex emailReg = new Regex(emailStr);
                //验证字符串是否是有效的邮箱地址
                return emailReg.IsMatch(address);
            }
    
        }
    
    • 调用demo
                SendEmail se = new SendEmail("c666666@163.com", "c66666", "123321", "smtp.163.com");
                se.AddGoalAdress("1101111@qq.com");
                se.AddGoalAdress("121219@qq.com");
                se.Emailbody="this  is a  test";
                se.Emailhead="test  email";
                se.AddFile(@"C:Users66Desktopdemo.docx");
                se.AddFile(@"C:Users66Desktopdemo2.docx");
                se.Send();    
    

      

  • 相关阅读:
    由WSDL文件生成WEB service server端C#程序(转)
    C#调用WebService实例和开发(转)
    ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist
    TOMCAT的框架结构
    Oracle学习历程--创建用户,分配表空间
    sql关键字之null
    oracle中varchar、varchar2、char和nvarchar的区别
    将中缀转换为后缀并求值
    Orchard FAQ
    盘点支持Orchard的.NET 4.5虚拟主机(虚拟空间)
  • 原文地址:https://www.cnblogs.com/cyh1282656849/p/7490477.html
Copyright © 2011-2022 走看看