Ejemplo n.º 1
0
        public static int GetHostPortSmtp(short smtpType)
        {
            EnumSMTP smtp = (EnumSMTP)smtpType;

            return(smtp == EnumSMTP.QQ ? 587 : 25);
        }
Ejemplo n.º 2
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);
            }
        }