邮件发送程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Text.RegularExpressions;
using System.IO;

namespace SendEmail
{
    class Program
    {
        static void Main(string[] args)
        {
            string strContent = GetAbandonNumAndRollbackNumOfRobot();
            Console.WriteLine(strContent);
            //接收者的邮件地址
            string strReceivers = ConfigurationManager.AppSettings["receiver"].ToString();
            string[] ArrMailto = strReceivers.Split(';');
            //抄送者的邮件地址
            string strCopytos = ConfigurationManager.AppSettings["copyto"].ToString();
            string[] ArrMailcc = strReceivers.Split(';');
            SendEmail(strContent,ArrMailto,ArrMailcc);
            Console.ReadKey();
        }

        /// <summary>
        /// 邮件发送程序
        /// </summary>
        /// <param name="strbody">发送的主体信息</param>
        /// <param name="ArrMailTo">接收人</param>
        /// <param name="ArrMailCc">抄送</param>
        static void SendEmail(string strbody, string[] ArrMailTo, string[] ArrMailCc)
        {
            try
            {
                //验证是否为正确的邮件地址
                Regex regMail = new Regex(@"^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$");
                MailMessage mail = new MailMessage();
                SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
                mail.From = new MailAddress("xxxxx@gmail.com");//发送者的邮箱
                foreach (var item in ArrMailTo)
                {
                    if (regMail.Match(item).Success)
                    {
                        mail.To.Add(item);
                    }
                }
                foreach (var item in ArrMailCc)
                {
                    if (regMail.Match(item).Success)
                    {
                        mail.CC.Add(item);
                    }
                }
                mail.Subject = "自动分拣人工复核数据统计";
                if (strbody.Equals(""))
                {
                    mail.Body =  DateTime.Today.ToLocalTime().ToString()+"—" + DateTime.Now.ToString() + "没有自动分拣人工复核数据";
                }
                else
                {
                    mail.Body = strbody;
                }               
                mail.BodyEncoding = Encoding.Default;
                //发送优先级
                mail.Priority = MailPriority.High;
                SmtpServer.Port = 587;
                SmtpServer.Credentials = new System.Net.NetworkCredential("xxxxx@gmail.com", "password");//发送者的邮箱与密码
                SmtpServer.EnableSsl = true;

                SmtpServer.Send(mail);
                Console.WriteLine("Mail sent successfully");
                ErrorLog("SendmailLog" + ".txt", "【" + string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now) + "】:Mail sent successfully"); 
            }
            catch (Exception ex)
            {
                Console.WriteLine("the mail sends out the failure:"+ex.ToString());
                ErrorLog("SendmailLog" + ".txt", "【" + string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now) + "】:the mail sends out the failure \n" + ex.ToString()); 
            }
        }
        /// <summary>
        /// 获得发送文件的主体信息
        /// </summary>
        /// <returns>主体信息</returns>
        static string GetAbandonNumAndRollbackNumOfRobot()
        {
            SqlDataReader sdrData = GetData();
            string strContent = "";//发送邮件的主体部分
            Regex regCHS = new Regex(@"[\u4e00-\u9fa5]+");//所有汉字
            int intMax = 15;//每一列的宽度为intMax
            char charReplace = ' ';
            bool flag = true;
            while (sdrData.Read())
            {
                if (flag)
                {
                    //获得标题
                    for (int i = 0; i < sdrData.FieldCount; i++)
                    {
                        var str = sdrData.GetName(i);
                        int n = str.Length;
                        if (regCHS.Match(str).Success)
                        {
                            //设定样式,每一列的宽度为intMax
                            str = str.PadRight(intMax - n, charReplace);
                        }
                        else
                        {
                            //字符长度不满足的情况以charReplcae补齐
                            str = str.PadRight(intMax, charReplace);
                        }
                        strContent = strContent + str;
                    }
                    flag = false;
                    strContent = strContent + "\n";
                }
                //获得内容
                for (int i = 0; i < sdrData.FieldCount; i++)
                {
                    var str = sdrData.GetValue(i).ToString();
                    int n = str.Length;
                    if (regCHS.Match(str).Success)
                    {
                        str = str.PadRight(intMax - n, charReplace);
                    }
                    else
                    {
                        str = str.PadRight(intMax, charReplace);
                    }
                    strContent = strContent + str;
                }                
                strContent = strContent + "\n";
            }
            return strContent;
        }
        /// <summary>
        /// 读取数据库操作
        /// </summary>
        /// <returns></returns>
        static  SqlDataReader GetData()
        {
            //测试的连接串
            string StrCon = ConfigurationManager.ConnectionStrings["ConSql"].ConnectionString;
            SqlConnection conn = new SqlConnection(StrCon);
            try
            {
                SqlCommand cmd = new SqlCommand();
                cmd.CommandTimeout = 1000;       
                cmd.Connection = conn;
                cmd.CommandText = "pr_QueryAbandonNumAndRollbackNumOfRobot";//需要调用的存储过程
                cmd.CommandType = CommandType.StoredProcedure;
                conn.Open();
                //获得数据
                SqlDataReader sqlDate = cmd.ExecuteReader(CommandBehavior.CloseConnection);//执行完后关闭连接
                return sqlDate;
            }
            catch (Exception e)
            {
                ErrorLog("SendmailLog" + ".txt", "【" + string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now) + "】:读取数据库操作出现问题 \n"+e.ToString()); 
                return null;
            }
            finally
            {              
                //sqlconn.Close();
            }
        }
        /// <summary>
        /// record the error log
        /// </summary>
        /// <param name="FileName">file name of log</param>
        /// <param name="FileContent">error information</param>
        private static void ErrorLog(string FileName, string FileContent)
        {
            try
            {
                string strPath = System.IO.Directory.GetCurrentDirectory() + "\\Log";
                if (!Directory.Exists(strPath))
                {
                    // Create the directory it does not exist. 
                    Directory.CreateDirectory(strPath);
                }
                if (FileName.IndexOf("/") != -1)
                {
                    FileName = FileName.Replace("/", "-");
                }
                string strLogName = strPath + "\\" + FileName;
                FileInfo LogFile = new FileInfo(strLogName);
                StreamWriter TextFile = LogFile.AppendText();
                //如果日志文件大于50M 
                if (LogFile.Length < 50000000)
                {
                    TextFile.WriteLine(FileContent);
                }
                TextFile.Close();

            }
            catch (Exception e)
            {

                Console.WriteLine(e.ToString());
            }

        }
    }
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值