调用:
SendTableMail.SendMsg(dt2, "IMA数据生成失败", list[i].PRDMODEL_CODE);
SendTableMail类的实现(组装Table消息格式,准备调用sendEmail类):
public class SendTableMail
{
//单一表格邮件内容
public static void SendMsg(DataTable data,string mailTitle,string PRDMODEL_CODE)
{
string MailBody = "<p style=\"font-size: 10pt\">以下内容为系统自动发送,请勿直接回复,谢谢。</p><table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" bgcolor=\"000000\" style=\"font-size: 10pt;line-height: 15px;\">";
MailBody += "<div align=\"center\">";
MailBody += "<tr>";
for (int hcol = 0; hcol < data.Columns.Count; hcol++)
{
MailBody += "<td bgcolor=\"999999\"> ";
MailBody += data.Columns[hcol].ColumnName;
MailBody += " </td>";
}
MailBody += "</tr>";
for (int row = 0; row < data.Rows.Count; row++)
{
MailBody += "<tr>";
for (int col = 0; col < data.Columns.Count; col++)
{
MailBody += "<td bgcolor=\"dddddd\"> ";
MailBody += data.Rows[row][col].ToString();
MailBody += " </td>";
}
MailBody += "</tr>";
}
MailBody += "</table>";
MailBody += "</div>";
sendEmail.SendEmail(mailTitle, MailBody, PRDMODEL_CODE);
}
public static DataRow StruDataRow(DataTable dt, string tag, string con)
{
DataRow dr = dt.NewRow();
dr["Tag"] = tag;
dr["Content"] = con;
return dr;
}
}
sendEmail类的实现:
public static class sendEmail
{
private static LogHelper logHelper = LogHelper.GetInstance(typeof(sendEmail));
private static readonly Logger logger = new Logger(typeof(sendEmail));
/// <summary>
/// 发送邮件
/// </summary>
/// <param name="mailSubject">邮箱主题</param>
/// <param name="mailContent">邮箱内容</param>
/// <returns>返回发送邮箱的结果</returns>
public static bool SendEmail(string mailSubject, string mailContent, string PRDMODEL_CODE = "")
{
try
{
string SMTPServer = ConfigurationManager.AppSettings["SMTPServer"].ToString();//smtpServer
string mailFrom = ConfigurationManager.AppSettings["SendAccount"].ToString();//登陆用户名
string userPassword = ConfigurationManager.AppSettings["SendAccountPwd"].ToString();//登陆密码
BLL.T_MAIL_CONFIGURATION_BLL bll = new BLL.T_MAIL_CONFIGURATION_BLL();
//Model.T_MAIL_CONFIGURATION mail = bll.GetModel();//邮件发送账号
//if(mail != null)
//{
// mailFrom = mail.MAILACCOUNT;
// userPassword = mail.MAILPASSWORD;
//}
//数据库查询收件人邮箱地址
var mailList = bll.GetT_MailList(PRDMODEL_CODE);
//string ReceivingAccount = ConfigurationManager.AppSettings["ReceivingAccount"].ToString();//
//string[] list = ReceivingAccount.Split(',');
// 设置发送方的邮件信息,例如使用网易的smtp
string smtpServer = SMTPServer; //SMTP服务器
//string mailFrom = "13628604250@163.com";
//string userPassword = "zhu1246194567";
SmtpClient client = new SmtpClient();
client.Host = smtpServer;//
client.UseDefaultCredentials = true;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Credentials = new System.Net.NetworkCredential(mailFrom, userPassword);
MailMessage Message = new MailMessage();
Message.From = new MailAddress(mailFrom);
if (mailList.Count > 0)
{
foreach (var item in mailList)
{
Message.To.Add(item.MAILACCOUNT);//将邮件发送给email
}
Message.Subject = mailSubject;
Message.Body = mailContent;
Message.SubjectEncoding = Encoding.UTF8;
Message.BodyEncoding = Encoding.UTF8;
Message.Priority = MailPriority.High;
Message.IsBodyHtml = true;
client.Send(Message);// 发送邮件
}
return true;
}
catch (SmtpException ex)
{
logHelper.Error("发送邮件失败,失败原因:", ex);
return false;
}
}
}
创建SMTP服务器(发送邮件需要SMTP服务器代发)
这里介绍创建网易SMTP(SMTP是邮件通讯格式)服务器:
1.先注册一个163网易邮箱
2.注册成功后登陆该邮箱
3.在该邮箱中找到设置>POP3/SMTP/IMAP点击进入,如下图:
4.进入后在POP3/SMTP/IMAP页面勾选POP3/SMTP服务和IMAP/SMTP服务,勾选后保存,如下图:
开启SMTP服务时会弹出下图,自动动生成授权密码
特别注意的是代码调用的时候,填的邮件发送密码需要填上述的授权密码,而非邮箱账号的登录密码,如下图: