Exemple #1
0
        void WriteSendHistory(AppEmailData email, Guid emailId, SqlCmdHelper.SqlRuleMapResult mapSql)
        {
            AppEmailReceiver send = new AppEmailReceiver()
            {
                PrimaryMsgId = emailId,
                CreateTime   = DateTime.Now,
                IsDelete     = false,
                SendResult   = false,
                SendTo       = email.To,
                IsMailer     = false
            };

            send.SendTime = email.SendTime.HasValue ? email.SendTime.Value : DateTime.Now;
            send.DayInt   = int.Parse(send.CreateTime.ToString("yyyyMMdd"));
            send.Id       = Guid.NewGuid();
            SqlCmdHelper help = new SqlCmdHelper()
            {
                SqlConnString = SqlConnString
            };

            help.InsertSqlParam(send.GetInsertSql(), send, mapSql);
            if (email.Mailer != null)
            { //抄送人
                send.IsMailer = true;
                for (int i = 0; i < email.Mailer.Count; i++)
                {
                    send.Id     = Guid.NewGuid();
                    send.SendTo = email.Mailer[i];
                    help.InsertSqlParam(send.GetInsertSql(), send, mapSql);
                }
            }
        }
Exemple #2
0
 public void sendEmail(AppEmailData emailDataObj)
 {
     try
     {
         AppDao appDaoObj = new AppDao();
         AppEmailConfiguration emailConfigObj = appDaoObj.getEmailConfiguration();
         SmtpClient            SmtpServer     = new SmtpClient(emailConfigObj.smtpHost);
         var mail = new System.Net.Mail.MailMessage();
         mail.From = new MailAddress(emailConfigObj.fromAddress);
         mail.To.Add(emailDataObj.toAddress);
         if (emailDataObj.ccAddress != null && !emailDataObj.ccAddress.Equals(""))
         {
             mail.CC.Add(emailDataObj.ccAddress);
         }
         mail.Subject    = emailDataObj.subject;
         mail.IsBodyHtml = true;
         string htmlBody;
         htmlBody  = emailDataObj.bodyHtml;
         mail.Body = htmlBody;
         SmtpServer.UseDefaultCredentials = false;
         SmtpServer.Credentials           = new System.Net.NetworkCredential(emailConfigObj.fromAddress, emailConfigObj.fromPassword);
         SmtpServer.EnableSsl             = true;
         SmtpServer.Send(mail);
     }
     catch (Exception ex)
     {
         LogUtils.myLog.Info("Email while sending error : ", ex);
     }
 }
        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));
        }
Exemple #4
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);
                }
            }
        }
Exemple #5
0
        protected void Application_Error(object sender, EventArgs e)
        {
            AppEmailData emailData    = new AppEmailData();
            GeneralUtils generalUtils = new GeneralUtils();

            emailData.toAddress = MyConstants.SupportEmailAdd;
            emailData.subject   = "ESABET Error Report - " + DateTime.Now.ToString();
            emailData.bodyHtml  = Request.Url.AbsoluteUri + "<br/><br/>" + "<a href='http://esabet.azurewebsites.net/log.txt'>View Log File: http://esabet.azurewebsites.net/log.txt </a>";
            LogUtils.myLog.Error(emailData.subject);
            LogUtils.myLog.Error(emailData.bodyHtml);
            generalUtils.sendEmail(emailData);
            Exception err = Server.GetLastError();

            if (err != null)
            {
                err = err.GetBaseException();
                LogUtils.myLog.Error("Message : " + err.Message);
                LogUtils.myLog.Error("Source : " + err.Source);
                LogUtils.myLog.Error("InnerException : " + ((err.InnerException != null) ? err.InnerException.ToString() : ""));
                LogUtils.myLog.Error("StackTrace : " + err.StackTrace);
                LogUtils.myLog.Error("Full StackTrace : " + err.Message, err);
                LogUtils.myLog.Error("Message : " + err.Message);
            }
        }
Exemple #6
0
        public bool SaveWaitSendEmailData(AppEmailData email)
        {
            DateTime now = DateTime.Now;

            SqlCmdHelper.SqlRuleMapResult mapSql = new SqlCmdHelper.SqlRuleMapResult();
            //数据存储到数据表
            AppEmail ae = new AppEmail()
            {
                Body       = email.Body,
                Subject    = email.Subject,
                CreateTime = now,
                IsDelete   = false,
                ParentId   = new Guid(),
                SendBy     = email.From,
                BodyType   = (short)email.BodyType.GetHashCode()
            };

            if (email.EmailId.Equals(new Guid()))
            {
                ae.Id = Guid.NewGuid();
            }
            else
            {
                ae.Id = email.EmailId;
            }
            SqlCmdHelper help = new SqlCmdHelper()
            {
                SqlConnString = SqlConnString
            };

            help.InsertSqlParam(ae.GetInsertSql(), ae, mapSql);
            if (!email.SendTime.HasValue)
            {//这条邮件数据是此刻进行发送
                email.SendTime = now;
            }
            //进行定时计划存储
            AppEmailPlan plan = new AppEmailPlan()
            {
                CreateTime   = now,
                Id           = Guid.NewGuid(),
                PrimaryMsgId = ae.Id,
                SendNumber   = 0,
                SendTime     = email.SendTime.Value
            };

            if (plan.SendTime <= now)
            {//已发送
                plan.SendNumber = 1;
            }
            help.InsertSqlParam(plan.GetInsertSql(), plan, mapSql);
            AppEmailReceiverPlan emailTo = new AppEmailReceiverPlan()
            {
                CreateTime   = now,
                Id           = Guid.NewGuid(),
                IsMailer     = false,
                PrimaryMsgId = ae.Id,
                SendTo       = email.To
            };

            help.InsertSqlParam(emailTo.GetInsertSql(), emailTo, mapSql);
            List <AppEmailReceiverPlan> emailToColl = new List <AppEmailReceiverPlan>();

            emailToColl.Add(emailTo);
            if (email.Mailer != null)
            {
                foreach (var item in email.Mailer)
                {//抄送人
                    AppEmailReceiverPlan emailers = new AppEmailReceiverPlan()
                    {
                        IsMailer     = true,
                        SendTo       = item,
                        PrimaryMsgId = ae.Id,
                        Id           = Guid.NewGuid(),
                        CreateTime   = now
                    };
                    help.InsertSqlParam(emailers.GetInsertSql(), emailers, mapSql);
                    //emailToColl.Add(emailers);
                }
            }
            if (!string.IsNullOrEmpty(string.Join("", mapSql.NoMapRule)))
            {
                //日志输出没有匹配的规则
                return(false);
            }
            string sql = string.Join(";", mapSql.WaitExcuteSql);

            return(help.ExcuteNoQuery(sql, mapSql.SqlParams.ToArray()) == mapSql.WaitExcuteSql.Count);
        }
        protected void b_Click(object sender, EventArgs e)
        {
            AppUser appUserObj = new AppUser();

            appUserObj.username = usernameTb.Text;
            appUserObj.pwd      = passwordTb.Text;
            String pwdConfirm = ConfirmPwdTb.Text;

            appUserObj.fullName = fullNameTb.Text;
            appUserObj.email    = emailTb.Text;
            appUserObj.module   = moduleTypeDdl.SelectedValue;
            appUserObj.userType = userTypeDdl.SelectedValue;
            appUserObj.course   = courseDdl.SelectedValue;
            Boolean isError = false;

            if (!appUserObj.pwd.Equals(pwdConfirm))
            {
                confirmPwdError.Text = "Confirm Password did not match.";
                isError = true;
            }

            DBUtils       dbUtils1             = new DBUtils();
            SqlDataReader attributeTypeReader1 = dbUtils1.readOperation("SELECT Username FROM Users");

            while (attributeTypeReader1.Read())
            {
                if (attributeTypeReader1[0].ToString().Equals(appUserObj.username))
                {
                    usernameError.Text = "Username already exists";
                    isError            = true;
                    break;
                }
            }
            dbUtils1.closeDBConnection();

            if (isError)
            {
                return;
            }

            AppDao appDaoObj = new AppDao();

            appUserObj.instructorId = appDaoObj.insertInstructor(appUserObj);
            appDaoObj.insertUser(appUserObj);

            GeneralUtils guObj        = new GeneralUtils();
            AppEmailData emailDataObj = new AppEmailData();

            emailDataObj.toAddress = appUserObj.email;
            emailDataObj.ccAddress = (new AppDao()).getEmailConfiguration().fromAddress;
            emailDataObj.subject   = "Expert System - Account Created";
            emailDataObj.bodyHtml  = "Dear " + appUserObj.fullName + ","
                                     + "<br/><br/>Your account has been successfully created on"
                                     + " <a href='http://esabet.azurewebsites.net'>Expert System for AEBT</a>"
                                     + " for the course of " + courseDdl.SelectedItem.Text
                                     + " with the following credentials:"
                                     + "<br/><b>Username: </b>" + appUserObj.username
                                     + "<br/><b>Password: </b>" + appUserObj.pwd
                                     + "<br/><br/>Please change your password after first login."
                                     + " If you are not the intended person kindly ignore this email."
                                     + "<br/><br/>Regards,"
                                     + "<br/>Admin of Expert System for ABET";
            guObj.sendEmail(emailDataObj);

            Response.Redirect("UserManagement.aspx");
        }
Exemple #8
0
        private void TestEmail(string title)
        {
            string text = "使用代码进行邮箱测试功能";
            string time = DateTime.Now.ToString(Common.Data.CommonFormat.DateTimeFormat);

            text += "<br/>邮件创建时间 :" + time;
            for (int i = 0; i < 10; i++)
            {
                text += string.Format("<br/> Guid{0}={1}", (i + 1), Guid.NewGuid().ToString().ToUpper());
            }
            string   logDir = LogPrepare.GetLogPath();
            ELogType el     = ELogType.EmailLog;
            string   day    = LogPrepare.GetLogName(el);

            try
            {
                Dictionary <string, string> emailSetting = InitAppSetting.AppSettingItemsInDB;
                string   type       = emailSetting[EAppSetting.SMTP.ToString()];
                string   sendBy     = emailSetting[EAppSetting.SystemEmailSendBy.ToString()];
                string   authorCode = emailSetting[EAppSetting.SystemEmailSMPTAuthor.ToString()];
                string   smtpClient = emailSetting[EAppSetting.SMTPClient.ToString()];
                EnumSMTP smtp;
                Enum.TryParse(type, out smtp);
                AppEmailData emailData = new AppEmailData()
                {
                    EmailCreateTime = DateTime.Now,
                    To      = InitAppSetting.Global.ReceiverInEmailActive,// "*****@*****.**",
                    Subject = title,
                    From    = sendBy,
                    Body    = text
                };
                EmailSystemSetting setting = new Model.EmailSystemSetting()
                {
                    EmailHostPort     = smtp == EnumSMTP.NETS163? 25:587,
                    EmailAuthortyCode = authorCode,
                    EmailAccount      = sendBy,
                    EmailHost         = smtpClient
                };

                #region 直接发送,不存储【测试可用】

                /*
                 * EmailData email = new EmailData()
                 * {
                 *  EmailTo =InitAppSetting.Global.ReceiverInEmailActive,
                 *  EmailSubject = title,
                 *  EmailBody = text,
                 *  CreateTime = DateTime.Now,
                 *  EmailFrom = sendBy
                 * };
                 * EmailService es = new EmailService(smtpClient, sendBy, authorCode, 25, true);
                 * es.SendEmailBy163(email);
                 * */
                #endregion
                IEmailDataService eds = IocMvcFactoryHelper.GetInterface <IEmailDataService>();
                eds.SendEmail(setting, emailData, smtp);
                LoggerWriter.CreateLogFile(time + "\t[OK]进行邮件测试", logDir, el, day, true);
            }
            catch (Exception ex)
            {
                string msg = time + "\t[ Error]" + ex.Message;
                LoggerWriter.CreateLogFile(msg, logDir, el, day, true);
            }
        }
Exemple #9
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);
            }
        }