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
}