Esempio n. 1
0
        public override string GetMailBody(LibMailParam param, Dictionary <string, string[]> addressDic)
        {
            string html = string.Empty;
            string path = Path.Combine(EnvProvider.Default.MainPath, "Resource", "MailTpl", "ApproveMailTpl.html");

            using (FileStream fs = new FileStream(path, FileMode.Open))
            {
                using (StreamReader reader = new StreamReader(fs, Encoding.Default))
                {
                    html = reader.ReadToEnd();
                }
            }
            html = html.Replace("@USER", addressDic[param.PersonId][0]);
            html = html.Replace("@DATE", DateTime.Now.ToShortDateString());
            html = html.Replace("@TEXT", param.Content);
            //if (param.ExpandData.ContainsKey("@IMG"))
            //{
            //    string base64 = param.ExpandData["@IMG"];
            //    string imageName = string.Format("{0}-{1}.png", LibDateUtils.GetCurrentDateTime(), LibCommUtils.GetInternalId());
            //    string imgUrl = Path.Combine(".", "PublicData", "Mail", "Image", imageName);
            //    using (FileStream fs = new FileStream(imgUrl, FileMode.Create))
            //    {
            //        byte[] imageBytes = Convert.FromBase64String(base64);
            //        fs.Write(imageBytes, 0, imageBytes.Length);
            //    }
            //    html.Replace("@IMG", imgUrl);
            //}
            string progId = param.ProgId.Replace('.', '_');

            html = html.Replace("@LINK", string.Format("http://{0}:{1}/desk/{2}/{3}", EnvProvider.Default.LocalHostName, EnvProvider.Default.CurrentPort, progId, param.BillNo));
            return(html);
        }
Esempio n. 2
0
        private static string GetMailBody(LibMailParam param, Dictionary <string, string[]> addressDic)
        {
            string     html    = string.Empty;
            LibMailTpl mailTpl = null;

            switch (param.MailKind)
            {
            case LibMailKind.Info:
                mailTpl = new LibInfoMailTpl();
                break;

            case LibMailKind.Approve:
                mailTpl = new LibApproveMailTpl();
                break;

            case LibMailKind.Warning:
                mailTpl = new LibWarningMailTpl();
                break;

            case LibMailKind.Problem:
                mailTpl = new LibProblemMailTpl();
                break;
            }
            html = mailTpl.GetMailBody(param, addressDic);
            return(html);
        }
Esempio n. 3
0
 protected override void AfterCommintData()
 {
     base.AfterCommintData();
     if (!this.ManagerMessage.IsThrow)
     {
         List <AxCRL.Core.Mail.LibMailParam> list = new List <AxCRL.Core.Mail.LibMailParam>();
         foreach (DataRow curRow in this.DataSet.Tables[0].Rows)
         {
             if (curRow.RowState == DataRowState.Modified)
             {
                 if (LibSysUtils.ToBoolean(curRow["ISUSE"]) && !LibSysUtils.ToBoolean(curRow["ISUSE", DataRowVersion.Original]))
                 {
                     AxCRL.Core.Mail.LibMailParam param = new AxCRL.Core.Mail.LibMailParam();
                     param.Content  = string.Format("您的账号 {0} 已开通。", curRow["USERID"]);
                     param.MailKind = AxCRL.Core.Mail.LibMailKind.Info;
                     param.Subject  = "智慧工厂账号开通";
                     param.To       = new List <string>()
                     {
                         LibSysUtils.ToString(curRow["PERSONID"])
                     };
                     list.Add(param);
                 }
             }
         }
         if (list.Count > 0)
         {
             ThreadPool.QueueUserWorkItem(LibMailHelper.SendMail, list);
         }
     }
 }
Esempio n. 4
0
        public string RecoverPassword(string userId)
        {
            string error = string.Empty;

            if (string.Compare(userId, "admin", true) == 0)
            {
                error = "账户admin不允许重置密码";
                return(error);
            }
            LibDataAccess dataAccess = new LibDataAccess();
            string        id = string.Empty, personId = string.Empty, email = string.Empty;

            using (IDataReader reader = dataAccess.ExecuteDataReader(string.Format("select A.USERID,A.PERSONID,B.MAIL from AXPUSER A inner join COMPERSON B on B.PERSONID=A.PERSONID where A.USERID={0}",
                                                                                   LibStringBuilder.GetQuotString(userId))))
            {
                if (reader.Read())
                {
                    id       = LibSysUtils.ToString(reader[0]);
                    personId = LibSysUtils.ToString(reader[1]);
                    email    = LibSysUtils.ToString(reader[2]);
                }
            }
            if (string.IsNullOrEmpty(id))
            {
                error = "该账号未注册";
            }
            else if (string.IsNullOrEmpty(email))
            {
                error = "该账号未关联邮箱,请联系管理员";
            }
            else
            {
                Random random = new Random();
                string pw     = string.Format("{0}{1}", userId, random.Next(1000, 9999));
                dataAccess.ExecuteNonQuery(string.Format("update AXPUSER set USERPASSWORD={0} where USERID={1}", LibStringBuilder.GetQuotString(pw), LibStringBuilder.GetQuotString(userId)));
                List <AxCRL.Core.Mail.LibMailParam> list  = new List <AxCRL.Core.Mail.LibMailParam>();
                AxCRL.Core.Mail.LibMailParam        param = new AxCRL.Core.Mail.LibMailParam();
                param.Content  = string.Format("您的账号 {0} 密码已重置。新密码为{1}", userId, pw);
                param.MailKind = AxCRL.Core.Mail.LibMailKind.Info;
                param.Subject  = "智慧工厂账号密码重置";
                param.To.Add(LibSysUtils.ToString(personId));
                list.Add(param);
                ThreadPool.QueueUserWorkItem(LibMailHelper.SendMail, list);
            }
            return(error);
        }
Esempio n. 5
0
        public override string GetMailBody(LibMailParam param, Dictionary <string, string[]> addressDic)
        {
            string html = string.Empty;
            string path = Path.Combine(EnvProvider.Default.MainPath, "Resource", "MailTpl", "InfoMailTpl.html");

            using (FileStream fs = new FileStream(path, FileMode.Open))
            {
                using (StreamReader reader = new StreamReader(fs, Encoding.Default))
                {
                    html = reader.ReadToEnd();
                }
            }
            html = html.Replace("@USER", string.IsNullOrEmpty(param.PersonId) ? string.Empty : addressDic[param.PersonId][0]);
            html = html.Replace("@DATE", DateTime.Now.ToShortDateString());
            html = html.Replace("@TEXT", param.Content);
            html = html.Replace("@LINK", string.Format("http://{0}:{1}", EnvProvider.Default.LocalHostName, EnvProvider.Default.CurrentPort));
            return(html);
        }
Esempio n. 6
0
 public override string GetMailBody(LibMailParam param, Dictionary <string, string[]> addressDic)
 {
     throw new NotImplementedException();
 }
Esempio n. 7
0
 public abstract string GetMailBody(LibMailParam param, Dictionary <string, string[]> addressDic);
Esempio n. 8
0
        private static void SendMailCore(object paramObj)
        {
            LibMailParam param = (LibMailParam)paramObj as LibMailParam;

            try
            {
                string host = EnvProvider.Default.MailProvider.Host;
                if (string.IsNullOrEmpty(host))
                {
                    return;
                }
                //确定smtp服务器地址。实例化一个Smtp客户端
                System.Net.Mail.SmtpClient    client     = new System.Net.Mail.SmtpClient(host);
                Dictionary <string, string[]> addressDic = GetMailAddress(param.PersonId, param.To, param.CC);
                //string[] sendInfo = addressDic[param.PersonId];
                //构造一个Email的Message对象
                MailMessage message = new MailMessage();
                //message.From = new MailAddress(sendInfo[1], sendInfo[0], Encoding.UTF8);
                message.From = new MailAddress(EnvProvider.Default.MailProvider.MailSys, "", Encoding.UTF8);
                foreach (var item in param.To)
                {
                    if (string.IsNullOrEmpty(item))
                    {
                        continue;
                    }
                    if (item.CompareTo("System") == 0)
                    {
                        continue;
                    }
                    string[] info = addressDic[item];
                    if (string.IsNullOrEmpty(info[1]))
                    {
                        continue;
                    }
                    message.To.Add(new MailAddress(info[1], info[0], Encoding.UTF8));
                }
                foreach (var item in param.CC)
                {
                    if (item.CompareTo("System") == 0)
                    {
                        continue;
                    }
                    string[] info = addressDic[item];
                    if (string.IsNullOrEmpty(info[1]))
                    {
                        continue;
                    }
                    message.CC.Add(new MailAddress(info[1], info[0], Encoding.UTF8));
                }
                if (message.To.Count == 0)
                {
                    return;
                }
                //为 message 添加附件
                foreach (string fileName in param.AttachmentList)
                {
                    //判断文件是否存在
                    string fileFullPath = Path.Combine(EnvProvider.Default.MainPath, "Resource", "Public", "Mail", "Attachment", fileName);
                    if (File.Exists(fileFullPath))
                    {
                        //构造一个附件对象
                        Attachment attach = new Attachment(fileFullPath);
                        //得到文件的信息
                        ContentDisposition disposition = attach.ContentDisposition;
                        disposition.CreationDate     = System.IO.File.GetCreationTime(fileFullPath);
                        disposition.ModificationDate = System.IO.File.GetLastWriteTime(fileFullPath);
                        disposition.ReadDate         = System.IO.File.GetLastAccessTime(fileFullPath);
                        //向邮件添加附件
                        message.Attachments.Add(attach);
                    }
                }
                //添加邮件主题和内容
                message.Subject         = param.Subject;
                message.SubjectEncoding = Encoding.UTF8;
                //设置邮件的信息
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                message.BodyEncoding  = System.Text.Encoding.UTF8;
                message.IsBodyHtml    = true;
                message.Body          = GetMailBody(param, addressDic);
                //如果服务器支持安全连接,则将安全连接设为true。
                //gmail支持,163不支持,如果是gmail则一定要将其设为true
                client.EnableSsl = false;
                //if (cmbBoxSMTP.SelectedText == "smpt.163.com")
                //    client.EnableSsl = false;
                //else
                //    client.EnableSsl = true;
                //设置用户名和密码。
                //string userState = message.Subject;
                client.UseDefaultCredentials = false;
                string username = EnvProvider.Default.MailProvider.MailSys;
                string passwd   = EnvProvider.Default.MailProvider.MailPwd;
                //用户登陆信息
                NetworkCredential myCredentials = new NetworkCredential(username, passwd);
                client.Credentials = myCredentials;
                //发送邮件
                client.Send(message);
            }
            catch
            {
                //throw;
            }
        }