【代码片段】发送邮件

using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Mail;
using System.Net;
using QuickEAS.CoreLib.Utils;

namespace QuickEAS.Network
{
    /// <summary>
    /// 邮件发送方式
    /// </summary>
    public enum LibMailSendWay
    {
        /// <summary>
        /// 以SMTP方式
        /// </summary>
        BySMTP,
        /// <summary>
        /// 以WEB方式
        /// </summary>
        ByWeb
    }
    /// <summary>
    /// 邮件发送参数
    /// </summary>
    public class LibMailSendArgs
    {
        public LibMailSendWay SendWay { get; set; }
        /// <summary>
        /// SMTP主机
        /// </summary>
        public string SMTPHost { get; set; }
        /// <summary>
        /// SMTP端口
        /// </summary>
        public int SMTPPort { get; set; }
        /// <summary>
        /// 使用SSL
        /// </summary>
        public bool EnableSSL { get; set; }
        /// <summary>
        /// 发件人地址
        /// </summary>
        public string MailFrom { get; set; }
        /// <summary>
        /// 收件人地址
        /// </summary>
        public string MailTo { get; set; }
        /// <summary>
        /// 登入帐号
        /// </summary>
        public string UserID { get; set; }
        /// <summary>
        /// 登入密码
        /// </summary>
        public string UserPassword { get; set; }
        /// <summary>
        /// 邮件标题
        /// </summary>
        public string Subject { get; set; }
        /// <summary>
        /// 邮件内容
        /// </summary>
        public string Body { get; set; }
        /// <summary>
        /// HTML方式发送
        /// </summary>
        public bool IsHTML { get; set; }
    }
    /// <summary>
    /// 邮件发送类
    /// </summary>
    public class LibSendMail
    {
        public static bool PostEmailBySMTP(LibMailSendArgs args, int tryCountIfSendFail = 3)
        {
            bool result = false;
            MailMessage mailmsg = new MailMessage();
            mailmsg.From = new MailAddress(args.MailFrom);  //定义发件人
            string[] mailToArray = LibSysUtils.SplitString(args.MailTo, ";");
            if (mailToArray.Length > 0)
            {
                foreach (string mailTo in mailToArray)
                {
                    MailAddress mailAddress = null;
                    if (mailTo.Contains("<") && mailTo.Contains(">"))
                    {
                        //易贸网络<service@emaosoft.com>
                        string[] strs = LibSysUtils.SplitString(mailTo, "<");
                        string displayName = strs[0];
                        strs = LibSysUtils.SplitString(strs[1], ">");
                        string email = strs[0];
                        mailAddress = new MailAddress(email, displayName);
                    }
                    else mailAddress = new MailAddress(mailTo);
                    mailmsg.To.Add(mailAddress); //添加收件人
                }
                mailmsg.Subject = args.Subject;  //邮件标题
                mailmsg.Body = args.Body;  //邮件内容
                mailmsg.BodyEncoding = Encoding.UTF8;
                mailmsg.IsBodyHtml = args.IsHTML;
                SmtpClient smtpClient = new SmtpClient();
                smtpClient.Host = args.SMTPHost;//发送邮件服务器
                smtpClient.Port = args.SMTPPort;
                smtpClient.Credentials = new NetworkCredential(args.UserID, args.UserPassword);
                smtpClient.EnableSsl = args.EnableSSL;
                smtpClient.Timeout = 1000 * 60; //60秒超时
                int failIndex = 0;
                do
                {
                    try
                    {
                        smtpClient.Send(mailmsg);
                        break;
                    }
                    catch (Exception ex)
                    {
                        failIndex++;
                        if (failIndex < tryCountIfSendFail)
                        {
                            LibSysUtils.AppendLog(LibSysUtils.GetInnerException(ex));
                            LibSysUtils.Sleep(5000);
                        }
                        else
                            throw LibSysUtils.GetInnerException(ex);
                    }
                }
                while (failIndex < tryCountIfSendFail);
                result = true;
            }
            return result;
        }

        public static bool PostEmailByWeb(LibMailSendArgs args)
        {
            return false;
        }

        public static bool PostEmail(LibMailSendArgs args)
        {
            bool result = false;
            switch (args.SendWay)
            {
                case LibMailSendWay.BySMTP:
                    result = PostEmailBySMTP(args);
                    break;
                case LibMailSendWay.ByWeb:
                    result = PostEmailByWeb(args);
                    break;
            }
            return result;
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值