public JsonResult CallEmailService(SendEmailData email) { Common.Data.JsonData json = new Common.Data.JsonData() { Result = true }; //查询邮件账户 EmailSystemSetting setting = RefreshAppSetting.GetSystemEmailAccount(); IEmailDataService es = IocMvcFactoryHelper.GetInterface <IEmailDataService>(); es.LogPath = InitAppSetting.LogPath; AppEmailData data = new AppEmailData() { Body = email.Body, From = setting.EmailAccount, Mailer = email.Mailer, To = email.To, Subject = email.Subject }; if (!string.IsNullOrEmpty(email.SendTime)) { data.SendTime = Convert.ToDateTime(email.SendTime); } json.Success = es.SendEmail(setting, data, setting.Smtp); json.AttachData = email; return(Json(json)); }
public void LoopSendEmali(List <EmailAccount> accs, string subject) {//每日激活邮件账户 //查询邮件账户列表 string dir = LogPrepare.GetLogPath(); ELogType el = ELogType.EmailLog; string file = LogPrepare.GetLogName(el); IEmailDataService emailService = IocMvcFactoryHelper.GetInterface <IEmailDataService>(); foreach (var item in accs) { string time = DateTime.Now.ToString(Common.Data.CommonFormat.DateTimeFormat); string title = "[HrApp Everyday active]"; try { //使用邮件账户进行邮件发送 short smtp = item.Smtp; //拼接发送的邮件内容 EmailSystemSetting ess = new EmailSystemSetting() { EmailAccount = item.Account, EmailAuthortyCode = item.AuthortyCode, EmailHost = item.SmtpHost, EmailHostPort = EmailSystemSetting.GetHostPortSmtp(smtp) }; ess.Smtp = (EnumSMTP)smtp; StringBuilder body = new StringBuilder(); body.AppendLine(" Guid:<br/> "); for (int i = 0; i < 10; i++) { body.AppendLine(string.Format(" {0}<br/> ", Guid.NewGuid().ToString().ToUpper())); } string text = string.Format("{0} <br/> smtp= {1}<br/> time= {2} <br/>{3} ", title, item.Account, time, body.ToString()); string receive = InitAppSetting.Global.ReceiverInEmailActive; AppEmailData emailData = new AppEmailData() { EmailCreateTime = DateTime.Now, To = string.IsNullOrEmpty(receive) ? "*****@*****.**" : receive, Subject = subject, From = item.Account, Body = text }; emailService.SendEmail(ess, emailData, ess.Smtp); LoggerWriter.CreateLogFile(title + "[Success]" + time, dir, el, file, true); } catch (Exception ex) { title += ex.Message; LoggerWriter.CreateLogFile(title + "[Error]" + time, dir, el, file, true); } } }
public static EmailSystemSetting GetSystemEmailAccount() { string type = InitAppSetting.AppSettingItemsInDB[EAppSetting.SMTP.ToString()]; short tv = short.Parse(type); EmailSystemSetting setting = new EmailSystemSetting() { EmailHost = InitAppSetting.AppSettingItemsInDB[EAppSetting.SMTPClient.ToString()], EmailAuthortyCode = InitAppSetting.AppSettingItemsInDB[EAppSetting.SystemEmailSMPTAuthor.ToString()], EmailAccount = InitAppSetting.AppSettingItemsInDB[EAppSetting.SystemEmailSendBy.ToString()], EmailHostPort = EmailSystemSetting.GetHostPortSmtp(tv), Smtp = (EnumSMTP)tv }; return(setting); }
public bool SendEmail(EmailSystemSetting setting, AppEmailData email, EnumSMTP smtpType) { DateTime appTime = Domain.GlobalModel.AppRunData.RunTime;//程序启动时的时间 if (email.EmailCreateTime.Equals(new DateTime())) { email.EmailCreateTime = DateTime.Now; } //文件内容长度选择存储形式 1.邮件文本内容 2 邮件写入的文本相对路径 email.BodyType = EnumEmailBodyType.Body; email.EmailId = Guid.NewGuid(); if (email.Body.Length > 1024) {//写入到文本下 email.BodyType = EnumEmailBodyType.TextPath; string emailPath = LogPath + "\\" + ELogType.EmailBody.ToString(); string file = email.EmailId.ToString() + ".log"; LoggerWriter.CreateLogFile(email.Body, emailPath, ELogType.EmailBody, file); email.Body = emailPath + "\\" + file; } DateTime now = DateTime.Now; string logFile = now.ToString(Common.Data.CommonFormat.DateIntFormat) + ".log"; string mailTo = email.To + ";"; if (email.Mailer != null) { mailTo += string.Join(";", email.Mailer); } try { //将邮件内容进行存档 bool succ = emailDataDal.SaveWaitSendEmailData(email); logDal.WriteLog(ELogType.EmailLog, string.Format("email data into db ,email Account=【{0}】", email.From) , ELogType.EmailLog.ToString(), succ); //判断是否需要进行此刻邮件发送 if (email.SendTime.HasValue && email.SendTime.Value > DateTime.Now) {//定时发送 logDal.WriteLog(ELogType.EmailBody, string.Format("Save email to DB:【{0}】", mailTo) , ELogType.EmailBody.ToString(), true); return(true); } EmailService es = new EmailService(setting.EmailHost, setting.EmailAccount, setting.EmailAuthortyCode, setting.EmailHostPort, true) { LogPath = LogPath }; //开始进行邮件发送 switch (smtpType) { case EnumSMTP.QQ: es.SendEmail(email.Subject, email.Body, email.From, email.From, email.To, (email.Mailer == null ? null : email.Mailer.ToArray()), true, System.Net.Mail.MailPriority.High, null); break; case EnumSMTP.NETS163: es.SendEmailBy163(new EmailData() { CreateTime = email.EmailCreateTime, EmailBody = email.Body, EmailFrom = email.From, EmailSubject = email.Subject, EmailTo = email.To, Mailer = email.Mailer }); break; default: break; } logDal.WriteLog(ELogType.EmailBody, string.Format("Send email to user:【{0}】", mailTo) , ELogType.EmailBody.ToString(), true); //进行日志存储 if (WriteLog) { LoggerWriter.CreateLogFile(string.Format("send email 【Success】-{0} - {1}", now.ToString()), LogPath, ELogType.EmailLog, logFile, true); } return(true); } catch (Exception ex) { string msg = ex.Message; logDal.WriteLog(ELogType.EmailBody, string.Format("Send email to user:【{0}】\r\n error msg=【{1}】", mailTo, msg) , ELogType.EmailBody.ToString(), false); if (WriteLog) { LoggerWriter.CreateLogFile(string.Format("send email 【Error】 -{0}- msg: {}", now.ToString(), msg), LogPath, ELogType.EmailLog, logFile, true); } return(false); } }