C# 邮件发送 实现类

using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net.Mail;
using System.Net.Mime;
using System.Text;

namespace IntOA.Common
{
    public class EmailSender
    {
        private MailMessage mMailMessage;                   //主要处理发送邮件的内容(如:收发人地址、标题、主体、图片等等)
        private SmtpClient mSmtpClient;                     //主要处理用smtp方式发送此邮件的配置信息(如:邮件服务器、发送端口号、验证方式等等)
        private bool mEnableSsl;                            //是否对邮件内容进行socket层加密传输
        private bool mEnablePwdAuthentication;              //是否对发件人邮箱进行密码验证

        private static string _mSenderPort = null;          //发送邮件所用的端口号(htmp协议默认为25)
        public static string mSenderPort
        {
            get
            {
                if (_mSenderPort == null)
                {
                    _mSenderPort = ConfigurationManager.AppSettings["mSenderPort"];
                }
                return _mSenderPort;
            }
        }

        private static string _mSenderServerHost = null;    //发件箱的邮件服务器地址(IP形式或字符串形式均可)
        public static string mSenderServerHost
        {
            get
            {
                if (_mSenderServerHost == null)
                {
                    _mSenderServerHost = ConfigurationManager.AppSettings["mSenderServerHost"];
                }
                return _mSenderServerHost;
            }
        }

        private static string _mSenderMailAddress = null;   //发送方的邮箱地址
        public static string mSenderMailAddress
        {
            get
            {
                if (_mSenderMailAddress == null)
                {
                    _mSenderMailAddress = ConfigurationManager.AppSettings["mSenderMailAddress"];
                }
                return _mSenderMailAddress;
            }
        }

        private static string _mSenderPassword = null;      //发件箱的密码
        public static string mSenderPassword
        {
            get
            {
                if (_mSenderPassword == null)
                {
                    _mSenderPassword = ConfigurationManager.AppSettings["mSenderPassword"];
                }
                return _mSenderPassword;
            }
        }

        private static string _mSenderUsername = null;      //发件箱的用户名(即@符号前面的字符串,例如:hello@163.com,用户名为:hello)
        public static string mSenderUsername
        {
            get
            {
                if (_mSenderUsername == null)
                {
                    _mSenderUsername = ConfigurationManager.AppSettings["mSenderUsername"];
                }
                return _mSenderUsername;
            }
        }

        ///<summary>
        /// 构造函数
        ///</summary>
        ///<param name="toMail">收件人地址(可以是多个收件人,程序中是以“;"进行区分的)</param>
        ///<param name="subject">邮件标题</param>
        ///<param name="emailBody">邮件内容(可以以html格式进行设计)</param>
        ///<param name="sslEnable">true表示对邮件内容进行socket层加密传输,false表示不加密</param>
        ///<param name="pwdCheckEnable">true表示对发件人邮箱进行密码验证,false表示不对发件人邮箱进行密码验证</param>
        public EmailSender(string toMail, string subject, string emailBody, bool sslEnable, bool pwdCheckEnable)
        {
            try
            {
                mMailMessage = new MailMessage();
                mMailMessage.To.Add(toMail);
                mMailMessage.From = new MailAddress(mSenderMailAddress);
                mMailMessage.Subject = subject;
                mMailMessage.Body = emailBody;
                mMailMessage.IsBodyHtml = true;
                mMailMessage.BodyEncoding = System.Text.Encoding.UTF8;
                mMailMessage.Priority = MailPriority.Normal;
                mEnableSsl = sslEnable;
                mEnablePwdAuthentication = pwdCheckEnable;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }


        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="toMail">收件人地址(可以是多个收件人,程序中是以“;"进行区分的)</param>
        /// <param name="subject">邮件标题</param>
        /// <param name="emailBody">邮件内容(可以以html格式进行设计)</param>
        public EmailSender(string toMail, string subject, string emailBody)
        {
            try
            {
                mMailMessage = new MailMessage();
                mMailMessage.To.Add(toMail);
                mMailMessage.From = new MailAddress(mSenderMailAddress);
                mMailMessage.Subject = subject;
                mMailMessage.Body = emailBody;
                mMailMessage.IsBodyHtml = true;
                mMailMessage.BodyEncoding = System.Text.Encoding.UTF8;
                mMailMessage.Priority = MailPriority.Normal;
                mEnableSsl = false;
                mEnablePwdAuthentication = false;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }

        ///<summary>
        /// 添加附件
        ///</summary>
        ///<param name="attachmentsPath">附件的路径集合,以分号分隔</param>
        public void AddAttachments(string attachmentsPath)
        {
            try
            {
                string[] path = attachmentsPath.Split(';'); //以什么符号分隔可以自定义
                Attachment data;
                ContentDisposition disposition;
                for (int i = 0; i < path.Length; i++)
                {
                    data = new Attachment(path[i], MediaTypeNames.Application.Octet);
                    disposition = data.ContentDisposition;
                    disposition.CreationDate = File.GetCreationTime(path[i]);
                    disposition.ModificationDate = File.GetLastWriteTime(path[i]);
                    disposition.ReadDate = File.GetLastAccessTime(path[i]);
                    mMailMessage.Attachments.Add(data);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }

        ///<summary>
        /// 邮件的发送
        ///</summary>
        public JsonResult Send()
        {
            JsonResult json = new JsonResult();
            try
            {
                if (this.mMailMessage != null)
                {
                    mSmtpClient = new SmtpClient();
                    mSmtpClient.Host = mSenderServerHost;
                    mSmtpClient.Port = Int32.Parse(mSenderPort);
                    mSmtpClient.UseDefaultCredentials = false;
                    mSmtpClient.EnableSsl = mEnableSsl;
                    if (mEnablePwdAuthentication)
                    {
                        System.Net.NetworkCredential nc = new System.Net.NetworkCredential(mSenderUsername, mSenderPassword);
                        mSmtpClient.Credentials = nc.GetCredential(mSmtpClient.Host, mSmtpClient.Port, "NTLM");     //NTLM: Secure Password Authentication in Microsoft Outlook Express
                    }
                    else
                    {
                        mSmtpClient.Credentials = new System.Net.NetworkCredential(mSenderUsername, mSenderPassword);
                    }
                    mSmtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
                    mSmtpClient.Send(mMailMessage);
                    json.ResFlag = JsonResultEnum.Success;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                json.ResFlag = JsonResultEnum.Failed;
                return json;
            }
            return json;
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值