using log4net; using Quartz; using System; using System.Data; using System.Data.SqlClient; using System.IO; using System.Linq; using System.Text; using MailKit.Net.Smtp; using MimeKit; using HtmlAgilityPack; namespace JobSendAgentMail { public class JobSendCtn : IJob { private ILog log = LogManager.GetLogger(typeof(JobSendCtn)); public void Execute(IJobExecutionContext context) { string connStr = context.JobDetail.JobDataMap.GetString("ConnectString"); string querySql = context.JobDetail.JobDataMap.GetString("QuerySql"); string MAILSENDACCOUNT = context.JobDetail.JobDataMap.GetString("MAILSENDACCOUNT"); string MAILSENDPASSWORD = context.JobDetail.JobDataMap.GetString("MAILSENDPASSWORD"); string MAILSENDSERVICE = context.JobDetail.JobDataMap.GetString("MAILSENDSERVICE"); string MAILSENDPORT = context.JobDetail.JobDataMap.GetString("MAILSENDPORT"); string MAILISSSL = context.JobDetail.JobDataMap.GetString("MAILISSSL"); //string MAILTEMPLATE = context.JobDetail.JobDataMap.GetString("MAILTEMPLATE"); string MAILTITLEJOB = context.JobDetail.JobDataMap.GetString("MAILTITLE"); string receiver = context.JobDetail.JobDataMap.GetString("MAILRECEIVER"); log.Debug($"开始执行发送邮件"); string maildescrption = ""; using (SqlConnection dbcon = new SqlConnection(connStr)) { SqlDataAdapter adapter = new SqlDataAdapter(querySql, dbcon); DataTable table = new DataTable(); adapter.Fill(table); if (table.Columns.Contains("箱号")) { if (table.Rows.Count > 0) { foreach (DataRow row in table.Rows) { if (row["箱号"].ToString() != "") { maildescrption = maildescrption + Environment.NewLine + row["箱号"].ToString(); } else { log.Debug($"资料不全:{row["BSNO"].ToString()}"); } } } else { log.Debug($"未查询到数据,SQL语句:{querySql}"); } if (!string.IsNullOrEmpty(maildescrption)) { try { SendEmail se = new SendEmail(receiver, MAILSENDACCOUNT, "", "", MAILTITLEJOB, maildescrption, false); se.SetSmtp(MAILSENDACCOUNT, MAILSENDPASSWORD, MAILSENDSERVICE,Convert.ToInt16(MAILSENDPORT), false, System.Net.Mail.MailPriority.Normal); //必须在所有参数设置完后调用此方法 //var message = new MimeMessage(); //message.From.Add(new MailboxAddress(MAILSENDACCOUNT, MAILSENDACCOUNT)); //var maillist = receiver.Split(';'); //foreach (var mailaddr in maillist) //{ // message.To.Add(MailboxAddress.Parse(mailaddr)); //} //message.Subject = MAILTITLEJOB; //var bodyBuilder = new BodyBuilder(); //bodyBuilder.TextBody = maildescrption; //message.Body = bodyBuilder.ToMessageBody(); //using (var client = new SmtpClient()) //{ // client.Connect(MAILSENDSERVICE, Convert.ToInt16(MAILSENDPORT),false); // client.Authenticate(MAILSENDACCOUNT, MAILSENDPASSWORD); // client.Send(message); // client.Disconnect(true); //} log.Debug($"邮件发送成功"); } catch (Exception ex) { log.Debug($"邮件发送失败:错误信息{ex.Message}"); } } } else { log.Error($"未包含所需的列(mblno,carrierid,portloadid),SQL语句:{querySql}"); } } } } }