• 群发邮件功能的完善


    邮件有需要加密的地方,提供一个加密方法类

    public static class DesSet
    {
        /// <summary>
        /// 加密方法 Key 必须为8位
        /// </summary>
        /// <param name="pToEncrypt"></param>
        /// <param name="sKey"></param>
        /// <returns></returns>
        public static string Encrypt(string pToEncrypt, string sKey)
        {
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();

            byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
            des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
            des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
            cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();
            StringBuilder ret = new StringBuilder();
            foreach (byte b in ms.ToArray())
            {
                ret.AppendFormat("{0:X2}", b);
            }
            ret.ToString();
            return ret.ToString();
        }
        /// <summary>
        /// 解密方法 Key 必须为8位
        /// </summary>
        /// <param name="pToDecrypt"></param>
        /// <param name="sKey"></param>
        /// <returns></returns>
        public static string Decrypt(string pToDecrypt, string sKey)
        {
            try
            {
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
                for (int x = 0; x < pToDecrypt.Length / 2; x++)
                {
                    int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
                    inputByteArray[x] = (byte)i;
                }
                des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
                des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                //如果数据为空字符串会报不正确的数据
                cs.FlushFinalBlock();
                StringBuilder ret = new StringBuilder();
                return System.Text.Encoding.Default.GetString(ms.ToArray());
            }
            catch
            {
                return null;
            }
        }
        /// <summary>
        /// 解密方法 Key 必须为8位
        /// </summary>
        /// <param name="pToDecrypt"></param>
        /// <param name="sKey"></param>
        /// <returns></returns>
        public static string qxDecrypt(string pToDecrypt, string sKey)
        {
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
            for (int x = 0; x < pToDecrypt.Length / 2; x++)
            {
                int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
                inputByteArray[x] = (byte)i;
            }
            des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
            des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
            cs.Write(inputByteArray, 0, inputByteArray.Length);
            //如果数据为空字符串会报不正确的数据
            cs.FlushFinalBlock();
            StringBuilder ret = new StringBuilder();
            return System.Text.Encoding.Default.GetString(ms.ToArray());
        }
    }

    ********************************************************************************

    群发上千封邮件,发送太快,会出现可能被服务器拒绝的情况。使用线程控制发送间隔

        protected void btn_sendMail_Click(object sender, EventArgs e)
        {
            ThreadStart mailThread = new ThreadStart(SendMail);
            Thread sendMail = new Thread(mailThread);
            sendMail.Name = "thread send mail";
            sendMail.Start();
        }

        private void SendMail()
        {
            Mails mySendMail = new Mails();
            for (int i = 0; i < lists.Count; i++)
            {
                mySendMail = new Mails("nihao",lists[i].ToString(), lists[i]);
                mySendMail.SendMail();
                if ((i + 1) % 50 == 0)
                {
                    Thread.Sleep(60000);//歇一分钟再发吧。。
                }
            }
        }

    *****************************************************************

    Mails类

        public void SendMail()
        {
            lock (this)
            {
                Thread.Sleep(3000);
                //创建smtpclient对象
                System.Net.Mail.SmtpClient client = new SmtpClient();
                client.Host = smtp;
                client.UseDefaultCredentials = false;
                client.Credentials = new System.Net.NetworkCredential(from,pwd);
                client.DeliveryMethod = SmtpDeliveryMethod.Network;

                //创建mailMessage对象 
                System.Net.Mail.MailMessage message = new MailMessage(from,to);
                message.Subject = subject;
                message.SubjectEncoding = Encoding.UTF8;
                message.Body = body;
                message.BodyEncoding = System.Text.Encoding.UTF8;
                message.IsBodyHtml = true;


                try
                {
                    client.Send(message);
                    StreamWriter sw = new StreamWriter("c:/message.txt", true);
                    sw.Write(this.to+"  发送成功" + " ");
                    sw.Close();
                }
                catch (Exception ex)
                {
                    StreamWriter sw = new StreamWriter("c:/message.txt", true);
                    sw.Write(this.to+"  发送失败。失败原因:"+ex.Message + " ");
                    sw.Close();
                }
            }
        }

  • 相关阅读:
    数据压缩和归档
    数据持久化
    文件和目录的使用
    数据及数据处理
    data types
    string services
    logging模块
    指导
    比较两个NSDate类型的参数相差的时间差
    推送 iOS 10
  • 原文地址:https://www.cnblogs.com/soundcode/p/3661830.html
Copyright © 2020-2023  润新知