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>");#endregionsbBody.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(); //实例化一个SmtpClientsmtp.DeliveryMethod = SmtpDeliveryMethod.Network; //将smtp的出站方式设为 Networksmtp.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}