コード例 #1
0
 public ActionResult ConfirmSendTestEmail(EmailTemplateSendTestModel model)
 {
     if (ModelState.IsValid)
     {
         return(Json(_emailTemplateService.SendTestEmailTemplate(model)));
     }
     return(Json(new ResponseModel
     {
         Success = false,
         Message = ModelState.BuildValidationMessages()
     }));
 }
コード例 #2
0
        /// <summary>
        /// Send test email template
        /// </summary>
        /// <param name="emailTemplateSendTestModel"></param>
        /// <returns></returns>
        public ResponseModel SendTestEmailTemplate(EmailTemplateSendTestModel emailTemplateSendTestModel)
        {
            var emailTemplate = GetById(emailTemplateSendTestModel.Id);

            if (emailTemplate == null)
            {
                return(new ResponseModel
                {
                    Success = false,
                    Message = T("EmailTemplate_Message_ObjectNotFound")
                });
            }
            var type = Type.GetType(emailTemplate.DataType);

            if (type != null && type.GetMethod("GetMockData") != null)
            {
                try
                {
                    var emailAccountService = HostContainer.GetInstance <IEmailAccountService>();

                    var defaultAccount = emailAccountService.GetDefaultAccount();
                    if (defaultAccount == null)
                    {
                        defaultAccount = emailAccountService.GetAll().FirstOrDefault();
                        if (defaultAccount == null)
                        {
                            return(new ResponseModel
                            {
                                Success = false,
                                Message = T("EmailTemplate_Message_MissingDefaultAccount")
                            });
                        }
                    }

                    dynamic templateModel = Activator.CreateInstance(type);
                    var     mockData      = templateModel.GetMockData();
                    var     emailResponse = ParseEmail(emailTemplate, mockData);

                    var emailModel = new EmailModel
                    {
                        To         = emailTemplateSendTestModel.To,
                        From       = !string.IsNullOrEmpty(emailTemplate.From) ? emailTemplate.From : defaultAccount.Email,
                        FromName   = "Email Test Service",
                        Bcc        = emailTemplateSendTestModel.BCC,
                        CC         = emailTemplateSendTestModel.CC,
                        Subject    = emailTemplateSendTestModel.Subject,
                        Body       = emailResponse.Body,
                        Attachment = string.Empty
                    };
                    return(emailAccountService.SendEmailDirectly(defaultAccount, emailModel));
                }
                catch (Exception exception)
                {
                    return(new ResponseModel
                    {
                        Success = false,
                        Message = T("EmailTemplate_Message_SendTestEmailFailure"),
                        DetailMessage = exception.Message
                    });
                }
            }

            return(new ResponseModel
            {
                Success = false,
                Message = T("EmailTemplate_Message_SendTestEmailFailure")
            });
        }