コード例 #1
0
ファイル: EmailService.cs プロジェクト: csuffyy/Docflow
        private void CreateMessange(EmailTemplateType type, DocumentTable docuTable, ApplicationUser userTable, string templateName, string documentUri, string bodyText, string subject, string[] parameters)
        {
            var emplTable = _EmplService.FirstOrDefault(x => x.ApplicationUserId == userTable.Id);

            if (emplTable == null)
            {
                return;
            }

            string processName = String.Empty;

            if (docuTable != null)
            {
                processName = docuTable.ProcessTable.ProcessName;
            }

            EmailParameterView emailParameter = FirstOrDefaultView(x => x.SmtpServer != String.Empty);

            new Task(() =>
            {
                string absFile   = HostingEnvironment.ApplicationPhysicalPath + templateName;
                string razorText = System.IO.File.ReadAllText(absFile);

                string currentLang = Thread.CurrentThread.CurrentCulture.Name;
                CultureInfo ci     = CultureInfo.GetCultureInfo(userTable.Lang);
                Thread.CurrentThread.CurrentCulture   = ci;
                Thread.CurrentThread.CurrentUICulture = ci;
                string body = String.Empty;

                switch (type)
                {
                case EmailTemplateType.Default:
                    body = Razor.Parse(razorText, new { DocumentNum = String.Format("{0} - {1}", docuTable.DocumentNum, processName), DocumentUri = documentUri, EmplName = emplTable.FullName, BodyText = bodyText });
                    break;

                case EmailTemplateType.Comment:
                    body = Razor.Parse(razorText, new { DocumentNum = String.Format("{0} - {1}", docuTable.DocumentNum, processName), DocumentUri = documentUri, EmplName = emplTable.FullName, BodyText = bodyText, LastComment = parameters[0] });
                    break;

                case EmailTemplateType.Delegation:
                    body = Razor.Parse(razorText, new { DocumentUri = documentUri, EmplNameTo = parameters[0], EmplNameFrom = parameters[1], BodyText = bodyText });
                    break;
                }
                SendEmail(emailParameter, new string[] { userTable.Email }, new string[] { }, subject, body);

                ci = CultureInfo.GetCultureInfo(currentLang);
                Thread.CurrentThread.CurrentCulture   = ci;
                Thread.CurrentThread.CurrentUICulture = ci;
            }).Start();
        }
コード例 #2
0
ファイル: EmailService.cs プロジェクト: csuffyy/Docflow
 public void Save(EmailParameterView viewTable)
 {
     if (viewTable.Id == null)
     {
         var domainTable = new EmailParameterTable();
         Mapper.Map(viewTable, domainTable);
         SaveDomain(domainTable);
     }
     else
     {
         var domainTable = Find(viewTable.Id);
         Mapper.Map(viewTable, domainTable);
         SaveDomain(domainTable);
     }
 }
コード例 #3
0
ファイル: EmailController.cs プロジェクト: csuffyy/Docflow
 public ActionResult Edit(EmailParameterView model)
 {
     if (ModelState.IsValid)
     {
         try
         {
             _Service.Save(model);
             return(RedirectToAction("Edit"));
         }
         catch (Exception e)
         {
             ModelState.AddModelError(string.Empty, e.GetOriginalException().Message);
         }
     }
     return(View(model));
 }
コード例 #4
0
ファイル: EmailService.cs プロジェクト: csuffyy/Docflow
        public string SendEmail(EmailParameterView model, string[] emailTo, string[] ccTo, string subject, string body)
        {
            if (emailTo == null || emailTo.Length == 0)
            {
                return("Email To Address Empty");
            }

            //var model = FirstOrDefaultView(x => x.SmtpServer != String.Empty);

            if (model == null)
            {
                return("No parameters");
            }

            SmtpClient smtpClient = new SmtpClient(model.SmtpServer, model.SmtpPort);

            smtpClient.EnableSsl             = model.EnableSsl;
            smtpClient.Timeout               = model.Timeout;
            smtpClient.DeliveryMethod        = SmtpDeliveryMethod.Network;
            smtpClient.UseDefaultCredentials = true;
            smtpClient.Credentials           = new NetworkCredential(model.UserName, model.Password);

            MailMessage message = new MailMessage();

            smtpClient.SendCompleted += (s, e) =>
            {
                smtpClient.Dispose();
                message.Dispose();
            };


            message.From         = new MailAddress(model.Email);
            message.Subject      = subject == null ? "" : subject;
            message.Body         = body == null ? "" : body;
            message.IsBodyHtml   = true;
            message.BodyEncoding = UTF8Encoding.UTF8;
            message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;

            foreach (string email in emailTo)
            {
                message.To.Add(email);
            }

            if (emailTo != null && ccTo.Length > 0)
            {
                foreach (string emailCc in ccTo)
                {
                    message.CC.Add(emailCc);
                }
            }

            try
            {
                smtpClient.Send(message);
                return("Email Send successFully");
            }
            catch
            {
                return("Email Send failed");
            }
        }