C#绘制表格并发送邮件功能

        public bool SendMail(string code, DataTable dt)    
        {
            string strAutoClearToMailList = "";//自动清算通知邮箱列表
            DataRow drTemp =null;
            //获取发送邮箱
            if("1062".Equals(code)) GetAlter("REPORT", "Report_1062", ref drTemp);
            else GetAlter("REPORT", "Report_1063", ref drTemp);
            if (drTemp != null)
            {
                strAutoClearToMailList = drTemp["KYVL2"].ToString();
            }

            //当前交易日
            string strCurrentWorkDate = string.Empty;
            interfaceBP.GetCurrentWorkDate(ref strCurrentWorkDate);

            #region 绘制表格
            StringBuilder sbBody = new StringBuilder();
            string strSubject = "1062".Equals(code) ? strCurrentWorkDate + "资管当日交易数据统计表" : strCurrentWorkDate + "零售当日交易数据统计表";
            sbBody.Length = 0;
            sbBody.AppendLine("1062".Equals(code) ? strCurrentWorkDate + "资管当日交易数据统计明细如下:" : strCurrentWorkDate + "零售当日交易数据统计明细如下:");
            sbBody.AppendLine("<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\">");
            sbBody.AppendLine("<tr>");

            sbBody.AppendLine("<th>");
            sbBody.AppendLine("渠道名称");
            sbBody.AppendLine("</th>");

            sbBody.AppendLine("<th>");
            sbBody.AppendLine("申请金额");
            sbBody.AppendLine("</th>");

            sbBody.AppendLine("<th>");
            sbBody.AppendLine("申请份额");
            sbBody.AppendLine("</th>");

            sbBody.AppendLine("<th>");
            sbBody.AppendLine("保有量");
            sbBody.AppendLine("</th>");

            sbBody.AppendLine("</tr>");

            foreach (DataRow row in dt.Rows)
            {
                if ("合计".Equals(row["CHANNELNAME"])) continue; 
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    if(i==0) sbBody.AppendLine("<td align=\"center\">");
                    else sbBody.AppendLine("<td align=\"right\">");
                    sbBody.AppendLine(row[i].ToString());
                    sbBody.AppendLine("</td>");
                }
                sbBody.AppendLine("</tr>");
            }
            #region 添加汇总行

            sbBody.AppendLine("<tr>");
            sbBody.AppendLine("<td align=\"center\">");
            sbBody.AppendLine("合计");
            sbBody.AppendLine("</td>");

            sbBody.AppendLine("<td align=\"right\">");
            sbBody.AppendLine(dt.Rows[0]["SUBAMT"].ToString());
            sbBody.AppendLine("</td>");

            sbBody.AppendLine("<td align=\"right\">");
            sbBody.AppendLine(dt.Rows[0]["SUBQUTY"].ToString());
            sbBody.AppendLine("</td>");

            sbBody.AppendLine("<td align=\"right\">");
            sbBody.AppendLine(dt.Rows[0]["BALANCE"].ToString());
            sbBody.AppendLine("</td>");
            sbBody.AppendLine("</tr>");

            #endregion
            sbBody.AppendLine("</table>");
            #endregion

            #region 发送邮件
            strAutoClearToMailList = strAutoClearToMailList.Trim();
            log.Info(String.Format("报表调用发送邮件服务(sendEmail_PROD),地址:{0},标题:{1}", strAutoClearToMailList, strSubject));
            try
            {
                foreach (string strToMail in strAutoClearToMailList.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                {
                    SmtpClient smtp = new SmtpClient(); //实例化一个SmtpClient

                    smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //将smtp的出站方式设为 Network
                    smtp.EnableSsl = false; //smtp服务器是否启用SSL加密
                    smtp.Host = "smtp.erichfund.com"; //指定 smtp 服务器地址
                    smtp.Port = 25; //指定 smtp 服务器的端口,默认是25,如果采用默认端口,可省去
                    smtp.UseDefaultCredentials = true;//SMTP服务器需要身份认证,目前基本没有不需要认证的了
                    smtp.Credentials = new NetworkCredential("zhangzhifeng@erichfund.com", "qq252865."); //发件人邮箱的用户和密码(授权码,并不是发件邮箱的密码)

                    MailMessage mailMsg = new MailMessage(); //实例化一个邮件类

                    mailMsg.Priority = MailPriority.Normal; //邮件的优先级,分为 Low, Normal, High,通常用 Normal即可
                    mailMsg.From = new MailAddress("zhangzhifeng@erichfund.com", "张志锋", Encoding.GetEncoding(936)); //这里应该和上面登录的邮箱名一致收件方看到的邮件来源(发信人邮件地址,发信人显示的名称,第二个参数所使用的编码)
                    //mailMsg.ReplyTo = new MailAddress("zheng**@163.com", "K2i*.com", Encoding.GetEncoding(936)); //对方回复邮件时默认的接收地址
                    //mailMsg.CC.Add(new MailAddress("zheng**@163.com", "K2i**.com", Encoding.GetEncoding(936))); //邮件的抄送者,支持群发,多个邮件地址之间用半角逗号分开
                    mailMsg.To.Add(new MailAddress(strToMail, strToMail, Encoding.GetEncoding(936))); //邮件的接收者,支持群发,多个地址之间用半角逗号分开
                    mailMsg.Subject = strSubject; //邮件标题
                    mailMsg.SubjectEncoding = Encoding.GetEncoding(936); //如果你的邮件标题包含中文,这里一定要指定,否则对方收到的极有可能是乱码。
                    mailMsg.IsBodyHtml = true; //邮件正文是否是HTML格式
                    mailMsg.BodyEncoding = Encoding.GetEncoding(936); //邮件正文的编码, 设置不正确, 接收者会收到乱码
                    mailMsg.Body = sbBody.ToString(); //邮件正文

                    smtp.Send(mailMsg); //发送邮件,如果不返回异常则发送成功
                }
                return true;
            }
            catch (Exception ex)
            {
                log.Info(String.Format("报表调用发送邮件服务异常(sendEmail_PROD),{0}", ex.Message));
                return false;
            }
            #endregion
        }

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值