public virtual void SendEmailWithDefaultSender(EmailMessage emailMessage, bool ignoreErrors)
        {
            var userConnectionArg  = new ConstructorArgument("userConnection", UserConnection);
            var emailClientFactory = ClassFactory.Get <EmailClientFactory>(userConnectionArg);

            if (UserConnection.GetIsFeatureEnabled("EmailIntegrationV2"))
            {
                var sender = new ActivityEmailSender(emailClientFactory, UserConnection);
                sender.Send(emailMessage, true);
            }
            else
            {
                var credentials = new Terrasoft.Mail.MailCredentials {
                    Host         = (string)SysSettings.GetValue(UserConnection, "SmtpHost"),
                    Port         = int.Parse(SysSettings.GetValue(UserConnection, "SmtpPort").ToString()),
                    UseSsl       = (bool)SysSettings.GetValue(UserConnection, "SmtpEnableSsl"),
                    UserName     = (string)SysSettings.GetValue(UserConnection, "SmtpUserName"),
                    UserPassword = (string)SysSettings.GetValue(UserConnection, "SmtpUserPassword")
                };
                try {
                    var emailClientFactoryArg = new ConstructorArgument("emailClientFactory", emailClientFactory);
                    var emailSener            = ClassFactory.Get <IEmailSender>(emailClientFactoryArg, userConnectionArg);
                    emailSener.Send(emailMessage, credentials);
                } catch (Exception e) {
                    _log.Error(e);
                    if (!ignoreErrors)
                    {
                        throw;
                    }
                }
            }
        }
        public List <SendResult> Send(string ActivityId)
        {
            string SendEmailStatus            = "InProgress";
            bool   hasFollowingProcessElement = false;

            try {
                var      emailClientFactory  = ClassFactory.Get <EmailClientFactory>(new ConstructorArgument("userConnection", UserConnection));
                var      activityEmailSender = new ActivityEmailSender(emailClientFactory, UserConnection);
                Activity activity            = activityEmailSender.Send(Guid.Parse(ActivityId));
                hasFollowingProcessElement = (bool)activity.Process.GetPropertyValue("NextProcessElementReady");
                SendEmailStatus            = "Sended";
            } catch (EmailException e) {
                SendEmailStatus = e.EmailSendStatus;
            }
            var sendStatusESQ = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "EmailSendStatus");

            sendStatusESQ.PrimaryQueryColumn.IsAlwaysSelect = true;
            sendStatusESQ.AddColumn("Name");
            sendStatusESQ.AddColumn("Code");
            sendStatusESQ.Filters.Add(sendStatusESQ.CreateFilterWithParameters(
                                          FilterComparisonType.Equal,
                                          "Code",
                                          SendEmailStatus
                                          ));
            var sendStatusEntityCollection = sendStatusESQ.GetEntityCollection(UserConnection);
            var sendResultList             = new List <SendResult>();

            if (sendStatusEntityCollection.Count > 0)
            {
                var item = sendStatusEntityCollection[0];
                sendResultList.Add(new SendResult()
                {
                    DisplayValue = item.PrimaryDisplayColumnValue,
                    Value        = item.PrimaryColumnValue.ToString(),
                    Code         = item.GetTypedColumnValue <string>("Code"),
                    HasFollowingProcessElement = hasFollowingProcessElement
                });
            }
            return(sendResultList);
        }