• .NET常用方法——邮件发送


    邮件发送类文件,可直接使用;

    调用方法(实例化、静态调用):

    实例化:

    string exception = "";

    SendEmail.SendEmail SE = new SendEmail.SendEmail("aaa@163.com", "aaa", "smtp.163.com", "管理员");

    SE.SendMails("aaa<aaa@qq.com>;aaa<aaa@hotmail.com>;", "你好", "您好!", new string[] { }, out exception);

    静态使用

    SendEmail.SendEmail.Sends("aaa@163.com", "aaa", "aaa", TextBox1.Text, TextBox2.Text, TextBox3.Text, "smtp.163.com", true, FilePaths, out exception);

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net.Mail;
    using System.Net;
    using System.Xml;
    using System.Text.RegularExpressions;
    
    namespace SendEmail
    {
        public class SendEmail
        {
            /// <summary>
            /// 发送者邮箱地址
            /// </summary>
            private static string fromMailAddress;
            /// <summary>
            /// 发送者邮箱密码
            /// </summary>
            private static string fromMailPwd;
            /// <summary>
            /// 发送者邮箱SMTP
            /// </summary>
            private static string fromMailSMTP;
            /// <summary>
            /// 发送者邮箱显示名称
            /// </summary>
            private static string fromDisplayName;
    
    
            /// <summary>
            /// 构造基础参数
            /// </summary>
            /// <param name="frommailaddress">发送方邮箱地址</param>
            /// <param name="frommailpwd">发送方邮箱密码</param>
            /// <param name="frommailsmtp">发送方smtp地址</param>
            /// <param name="fromdisplayname">发送者邮箱显示名称</param>
            public SendEmail(string frommailaddress, string frommailpwd, string frommailsmtp, string fromdisplayname)
            {
                fromMailAddress = frommailaddress;
                fromMailPwd = frommailpwd;
                fromMailSMTP = frommailsmtp;
                fromDisplayName = fromdisplayname;
            }
    
            public SendEmail()
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(System.Web.HttpContext.Current.Server.MapPath("~/SystemConfig.xml"));
                XmlNode ServerMail = doc.SelectSingleNode("/Condition/System/ServerMail");
                XmlNode PwdMail = doc.SelectSingleNode("/Condition/System/PwdMail");
                XmlNode SMTP = doc.SelectSingleNode("/Condition/System/SMTP");
                XmlNode DisplayName = doc.SelectSingleNode("/Condition/System/DisplayName");
                if (ServerMail != null && ServerMail.InnerText != "" && PwdMail != null && PwdMail.InnerText != "" && SMTP != null && SMTP.InnerText != "" && DisplayName != null && DisplayName.InnerText != "")
                {
                    fromMailAddress = ServerMail.InnerText;
                    fromMailPwd =  Encoding.Default.GetString(Convert.FromBase64String(doc.SelectSingleNode("/Condition/System/PwdMail").InnerText));
                    fromMailSMTP = SMTP.InnerText;
                    fromDisplayName = DisplayName.InnerText;
                }
            }
    
            /// <summary>
            /// 实例化后邮件发送
            /// </summary>
            /// <param name="ToEmails">接收邮件地址,lzy <lo_yung@163.com>;</param>
            /// <param name="eSubject">邮件标题</param>
            /// <param name="eBody">邮件内容</param>
            /// <param name="FileNames">邮件附件,无附件为null</param>
            /// <param name="exception">未发送成功异常消息</param>
            /// <returns>是否发送成功</returns>
            public bool SendMails(string ToEmails, string eSubject, string eBody, string[] FileNames, out string exception)
            {
                bool Result = false;
                //实例化发送内容对象
                MailMessage oMail = new MailMessage();//创建一个MailMessage对象  
                try
                {
                    MailAddress from = new MailAddress(fromMailAddress, fromDisplayName);//设置发送者信息 
                    oMail.From = from;//设置发信人地址
                    oMail.Subject = eSubject;//邮件标题         
                    oMail.Body = eBody; //邮件内容  
                    oMail.IsBodyHtml = true;   //指定邮件格式,支持HTML格式 
                    oMail.BodyEncoding = System.Text.Encoding.GetEncoding("GB2312");//邮件采用的编码,字符集,缺省为"US-ASCII"
                    oMail.Priority = MailPriority.High;//设置邮件的优先级为高      
                    oMail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;//发送结果通知
                    if (FileNames.Length > 0)
                    {
                        foreach (string filepath in FileNames)
                            oMail.Attachments.Add(new Attachment(filepath));//邮件添加附件
                    }
    
                    //实例化发送载体
                    SmtpClient client = new SmtpClient();  //实例化发送邮件SMTP服务器
                    client.Host = fromMailSMTP;    //指定邮件服务器
                    client.UseDefaultCredentials = false;//凭据是否随请求一起发送,必须放在client.Credentials前
                    client.Credentials = new NetworkCredential(fromMailAddress, fromMailPwd);//指定服务器邮件,及密码
                    client.DeliveryMethod = SmtpDeliveryMethod.Network;//将邮件内容发送到SMTP服务器发出
                    //接收邮件格式化
                    if (ToEmails.Trim().IndexOf(";") != -1 && ToEmails.Trim().IndexOf("<") != -1 && ToEmails.Trim().IndexOf(">") != -1)
                    {
                        string[] mailNames = ToEmails.Trim().Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                        foreach (string name in mailNames)
                        {
                            if (!string.IsNullOrEmpty(name))
                            {
                                string displayName = ""; string address = "";
                                //邮件格式loyung <lo_yung@163.com>;
                                if (name.IndexOf('<') > 0)
                                {
                                    displayName = name.Substring(0, name.IndexOf('<'));
                                    address = name.Substring(name.IndexOf('<') + 1).Replace('>', ' ');
                                }
                                oMail.To.Add(new MailAddress(address, displayName));
                            }
                        }
                    }
                    else
                    {
                        Regex reg = new Regex("^\s*([A-Za-z0-9_-]+(\.\w+)*@(\w+\.)+\w{2,5})\s*$");
                        if (reg.IsMatch(ToEmails.Trim()))
                        {
                            oMail.To.Add(new MailAddress(ToEmails.Trim(), ToEmails.Trim().Substring(0, ToEmails.Trim().IndexOf("@"))));
                        }
                        else
                        {
                            exception = "邮箱格式不正确";
                            Result = false;
                        }
                    }
                    client.Send(oMail);  //发送邮件  
                    exception = "发送成功!";
                    Result = true;
                }
                catch (Exception ex)
                {
                    exception = ex.Message;
                    Result = false;
                }
                finally
                {
                    oMail.Dispose();   //释放资源 
                }
                return Result;
            }
    
    
            /// <summary>
            /// 静态方法,发送邮件
            /// </summary>
            /// <param name="FromEmailAddress">发送方邮箱地址</param>
            /// <param name="FromDisplayName">发送方邮箱显示名称</param>
            /// <param name="FromPWD">发送方邮箱密码</param>
            /// <param name="ToEmails">接收邮件地址,lzy <lo_yung@163.com>;</param>
            /// <param name="eSubject">邮件标题</param>
            /// <param name="eBody">邮件内容</param>
            /// <param name="SMTP">发送方smtp地址</param>
            /// <param name="IsBodyHtml">邮件内容是否以html呈现</param>
            /// <param name="FileNames">邮件附件,无附件为null</param>
            /// <param name="exception">未发送成功异常消息</param>
            /// <returns>是否发送成功</returns>
            public static bool Sends(string FromEmailAddress, string FromDisplayName, string FromPWD, string ToEmails, string eSubject, string eBody, string SMTP, bool IsBodyHtml, string[] FileNames, out string exception)
            {
                bool Result = false;
                //实例化发送内容对象
                MailMessage oMail = new MailMessage();//创建一个MailMessage对象
                try
                {
                    MailAddress from = new MailAddress(FromEmailAddress, FromDisplayName);//设置发送者信息 
                    oMail.From = from;//设置发信人地址
                    oMail.Subject = eSubject;//邮件标题         
                    oMail.Body = eBody; //邮件内容  
                    oMail.IsBodyHtml = true;   //指定邮件格式,支持HTML格式 
                    oMail.BodyEncoding = System.Text.Encoding.GetEncoding("GB2312");//邮件采用的编码,字符集,缺省为"US-ASCII"
                    oMail.Priority = MailPriority.High;//设置邮件的优先级为高      
                    oMail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;//发送结果通知
                    if (FileNames.Length > 0)
                    {
                        foreach (string filepath in FileNames)
                            oMail.Attachments.Add(new Attachment(filepath));//邮件添加附件
                    }
    
                    //实例化发送载体
                    SmtpClient client = new SmtpClient();  //实例化发送邮件SMTP服务器
                    client.Host = SMTP;    //指定邮件服务器
                    client.UseDefaultCredentials = false;//凭据是否随请求一起发送,必须放在client.Credentials前
                    client.Credentials = new NetworkCredential(FromEmailAddress, FromPWD);//指定服务器邮件,及密码
                    client.DeliveryMethod = SmtpDeliveryMethod.Network;//将邮件内容发送到SMTP服务器发出
                    //接收邮件格式化
                    if (ToEmails.Trim().IndexOf(";") != -1 && ToEmails.Trim().IndexOf("<") != -1 && ToEmails.Trim().IndexOf(">") != -1)
                    {
                        string[] mailNames = ToEmails.Trim().Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                        foreach (string name in mailNames)
                        {
                            if (!string.IsNullOrEmpty(name))
                            {
                                string displayName = ""; string address = "";
                                //邮件格式loyung <lo_yung@163.com>;
                                if (name.IndexOf('<') > 0)
                                {
                                    displayName = name.Substring(0, name.IndexOf('<'));
                                    address = name.Substring(name.IndexOf('<') + 1).Replace('>', ' ');
                                }
                                oMail.To.Add(new MailAddress(address, displayName));
                            }
                        }
                    }
                    else
                    {
                        Regex reg = new Regex("^\s*([A-Za-z0-9_-]+(\.\w+)*@(\w+\.)+\w{2,5})\s*$");
                        if (reg.IsMatch(ToEmails.Trim()))
                        {
                            oMail.To.Add(new MailAddress(ToEmails.Trim(), ToEmails.Trim().Substring(0, ToEmails.Trim().IndexOf("@"))));
                        }
                        else
                        {
                            exception = "邮箱格式不正确";
                            Result = false;
                        }
                    }
                    client.Send(oMail);  //发送邮件  
                    exception = "发送成功!";
                    Result = true;
                }
                catch (Exception ex)
                {
                    exception = ex.Message;
                    Result = false;
                }
                finally
                {
                    oMail.Dispose();   //释放资源 
                }
                return Result;
            }
    
        }
    }
  • 相关阅读:
    基于RSA securID的Radius二次验证java实现(PAP验证方式)
    一些指令 & 一些知识 (Linux Spring log4j...)
    RSA, ACS5.X 集成配置
    Python中的动态属性与描述符
    设计模式(一):单例模式
    JavaWeb
    动态规划_背包问题
    动态规划_最长上升子序列
    MySQL复习
    动态规划_数字三角形
  • 原文地址:https://www.cnblogs.com/loyung/p/4917609.html
Copyright © 2020-2023  润新知