예제 #1
0
        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));
        }
예제 #2
0
        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);
                }
            }
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
            }
        }