邮件 发送

        我所列举都是重点,就把一些其他操作过滤掉了,比如异常处理等,实际使用需要根据具体情况自行判断。

        /// <summary>
        /// 发邮件带抄送人     
        /// </summary>
        /// <param name="MailContent">邮件内容</param>
        /// <param name="IsBodyHtml">是否是HTML</param>
        /// <param name="Theme">邮件主旨</param>
        /// <param name="Copyer">抄送人</param>
        /// <returns></returns>
        [HttpPost("SendEmail")]
        public string SendEmail(string MailContent, bool IsBodyHtml, string Theme, List<string> Receiver)
        {
            //公司提供的发邮件人
            SmtpClient sender = new SmtpClient("ip", 8995)
            {
                UseDefaultCredentials = false,
                DeliveryMethod = SmtpDeliveryMethod.Network,
                EnableSsl = false //SSL/TLS不加密
            };
            sender.Credentials = new NetworkCredential("iFactory", "密码");


            //邮件信息
            MailMessage myMail = new MailMessage
            {
                From = new MailAddress("iFactory@luxshare-ict.com"),//公司提供的发邮件人
                Subject = Theme,
                SubjectEncoding = Encoding.UTF8,
                Body = MailContent,
                BodyEncoding = Encoding.UTF8,
                IsBodyHtml = IsBodyHtml,
                Priority = MailPriority.High
            };

            
            for (int i = 0; i < Receiver.Count; i++)//收件人
            {
                string receivers = Receiver[i].ToString().Trim();
                if (CheckEamilFormat.IsValidEmail(receivers) && (receivers.ToUpper().Contains("LUXSAN") || receivers.ToUpper().Contains("LUXSHARE")))//为了保密,公司要求邮件必须要包含LUXSHARE、LUXSAN,因为之前有向qq邮箱发邮件的情况。
                {
                    myMail.To.Add(new MailAddress(Receiver[i].ToString().Trim()));
                }
            }
            //如果有抄送人的话
            //for (int i = 0; i < Copyer.Count; i++)//抄送人
            //{
            //    string copyers = Copyer[i].ToString().Trim();
            //    if (CheckEamilFormat.IsValidEmail(copyers) && (copyers.ToUpper().Contains("LUXSAN") || copyers.ToUpper().Contains("LUXSHARE")))
            //    {
            //        myMail.CC.Add(new MailAddress(Copyer[i].ToString().Trim()));
            //    }
            //}

            sender.Send(myMail);
            //如果有附件的话,完事后附件要释放
            //foreach (Attachment item in myMail.Attachments)
            //{
            //    item.Dispose();
            //}

            return "发送成功";
        }




    public class CheckEamilFormat
    {
        //判断邮件地址是否正确,错误则跳过
        public static bool IsValidEmail(string email)
        {
            if (string.IsNullOrEmpty(email))
            {
                return false;
            }

            try
            {
                MailAddress mailAddress = new MailAddress(email);
                return true;
            }
            catch (FormatException)
            {
                return false;
            }
        }
    }

题外话:我在做某个需求时,用户想要发邮件带图片,并且图片附着在正文中,本身简单a标签的事,但由于公司保密措施强大,禁止开发人员通过邮件发送图片,但用户又坚持。发图片这个事,用户又找了资安,又找了稽查,最后结果是规则已经定下了,但是如果我们可以发图片的话,只要不涉及过高的机密,他们就允许。这一下子就把问题抛给了我,要我一个小卡拉米去“开疆拓土”?

当时确实挺烧脑的。

好在不辱使命,后来我突发奇想了个idea,就是可以把用户上传的图片先存到图片服务器中,用户调发邮件接口时去图片的服务器中查该图片,并下载到接口所在的服务器中,然后将图片附着到邮件的正文中,最后再从接口所在的服务器中把上传的图片删除掉,以免图片越来越多,占用磁盘间,完美解决。或许这就是程序员的快乐吧,解决一个难点,能happy好几天。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值