public void SetByModel(OutgoingMailModel outgoingMailModel)
 {
     ReferenceType          = outgoingMailModel.ReferenceType;
     ReferenceId            = outgoingMailModel.ReferenceId;
     ReferenceVer           = outgoingMailModel.ReferenceVer;
     Host                   = outgoingMailModel.Host;
     Port                   = outgoingMailModel.Port;
     From                   = outgoingMailModel.From;
     To                     = outgoingMailModel.To;
     Cc                     = outgoingMailModel.Cc;
     Bcc                    = outgoingMailModel.Bcc;
     Title                  = outgoingMailModel.Title;
     Body                   = outgoingMailModel.Body;
     SentTime               = outgoingMailModel.SentTime;
     DestinationSearchRange = outgoingMailModel.DestinationSearchRange;
     DestinationSearchText  = outgoingMailModel.DestinationSearchText;
     Comments               = outgoingMailModel.Comments;
     Creator                = outgoingMailModel.Creator;
     Updator                = outgoingMailModel.Updator;
     CreatedTime            = outgoingMailModel.CreatedTime;
     UpdatedTime            = outgoingMailModel.UpdatedTime;
     VerUp                  = outgoingMailModel.VerUp;
     Comments               = outgoingMailModel.Comments;
     ClassHash              = outgoingMailModel.ClassHash;
     NumHash                = outgoingMailModel.NumHash;
     DateHash               = outgoingMailModel.DateHash;
     DescriptionHash        = outgoingMailModel.DescriptionHash;
     CheckHash              = outgoingMailModel.CheckHash;
     AttachmentsHash        = outgoingMailModel.AttachmentsHash;
 }
        /// <summary>
        /// Fixed:
        /// </summary>
        private static string MailDefault(
            Context context,
            SiteSettings ss,
            OutgoingMailModel outgoingMailModel,
            string mailDefault,
            string type)
        {
            var myAddress = new MailAddressModel(
                context: context,
                userId: context.UserId).MailAddress;

            if (outgoingMailModel.AccessStatus == Databases.AccessStatuses.Selected)
            {
                switch (type)
                {
                case "to":
                    var to = outgoingMailModel.To
                             .Split(';')
                             .Where(o => Libraries.Mails.Addresses.GetBody(o) != myAddress)
                             .Where(o => o.Trim() != string.Empty)
                             .Join(";");
                    return(to.Trim() != string.Empty
                            ? outgoingMailModel.From.ToString() + ";" + to
                            : outgoingMailModel.From.ToString());

                case "cc":
                    return(outgoingMailModel.Cc);

                case "bcc":
                    return(outgoingMailModel.Bcc);
                }
            }
            return(mailDefault);
        }
        /// <summary>
        /// Fixed:
        /// </summary>
        private static string ReplyTitle(OutgoingMailModel outgoingMailModel)
        {
            var title = outgoingMailModel.Title.Value;

            return(outgoingMailModel.AccessStatus == Databases.AccessStatuses.Selected
                ? title.StartsWith("Re: ") ? title : "Re: " + title
                : string.Empty);
        }
Example #4
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public static Error.Types OnSending(
            SiteSettings ss, OutgoingMailModel outgoingMailModel, out string data)
        {
            data = null;
            if (!ss.CanSendMail())
            {
                return(Error.Types.HasNotPermission);
            }
            if ((outgoingMailModel.To +
                 outgoingMailModel.Cc +
                 outgoingMailModel.Bcc).Trim() == string.Empty)
            {
                return(Error.Types.RequireMailAddresses);
            }
            var badTo = MailAddressValidators.BadMailAddress(
                outgoingMailModel.To, out data);

            if (badTo != Error.Types.None)
            {
                return(badTo);
            }
            var badCc = MailAddressValidators.BadMailAddress(
                outgoingMailModel.Cc, out data);

            if (badCc != Error.Types.None)
            {
                return(badCc);
            }
            var badBcc = MailAddressValidators.BadMailAddress(
                outgoingMailModel.Bcc, out data);

            if (badBcc != Error.Types.None)
            {
                return(badBcc);
            }
            var externalTo = MailAddressValidators.ExternalMailAddress(
                outgoingMailModel.To, out data);

            if (externalTo != Error.Types.None)
            {
                return(externalTo);
            }
            var externalCc = MailAddressValidators.ExternalMailAddress(
                outgoingMailModel.Cc, out data);

            if (externalCc != Error.Types.None)
            {
                return(externalCc);
            }
            var externalBcc = MailAddressValidators.ExternalMailAddress(
                outgoingMailModel.Bcc, out data);

            if (externalBcc != Error.Types.None)
            {
                return(externalBcc);
            }
            return(Error.Types.None);
        }
Example #5
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public static string Send(IContext context, string reference, long id)
        {
            var ss = SiteSettingsUtilities.GetByReference(
                context: context,
                reference: reference,
                referenceId: id);

            if (context.ContractSettings.Mail == false)
            {
                return(Error.Types.Restricted.MessageJson(context: context));
            }
            var outgoingMailModel = new OutgoingMailModel(
                context: context,
                reference: reference,
                referenceId: id);
            var invalidMailAddress = string.Empty;
            var invalid            = OutgoingMailValidators.OnSending(
                context: context,
                ss: ss,
                outgoingMailModel: outgoingMailModel,
                data: out invalidMailAddress);

            switch (invalid)
            {
            case Error.Types.None:
                break;

            case Error.Types.BadMailAddress:
            case Error.Types.ExternalMailAddress:
                return(invalid.MessageJson(
                           context: context,
                           data: invalidMailAddress));

            default:
                return(invalid.MessageJson(context: context));
            }
            var error = outgoingMailModel.Send(
                context: context,
                ss: ss);

            return(error.Has()
                ? error.MessageJson(context: context)
                : new OutgoingMailsResponseCollection(outgoingMailModel)
                   .CloseDialog()
                   .ClearFormData()
                   .Html("#OutgoingMailDialog", string.Empty)
                   .Val("#OutgoingMails_Title", string.Empty)
                   .Val("#OutgoingMails_Body", string.Empty)
                   .Prepend(
                       "#OutgoingMailsForm",
                       new HtmlBuilder().OutgoingMailListItem(
                           context: context,
                           ss: ss,
                           outgoingMailModel: outgoingMailModel))
                   .Message(Messages.MailTransmissionCompletion(context: context))
                   .ToJson());
        }
 /// <summary>
 /// Fixed:
 /// </summary>
 public static HtmlBuilder OutgoingMailListItem(
     this HtmlBuilder hb,
     Context context,
     SiteSettings ss,
     OutgoingMailModel outgoingMailModel)
 {
     return(hb.Div(
                css: "item",
                action: () => hb
                .H(number: 3, css: "title-header", action: () => hb
                   .Text(text: Displays.SentMail(context: context)))
                .Div(css: "content", action: () => hb
                     .FieldText(
                         controlId: string.Empty,
                         labelText: Displays.OutgoingMails_SentTime(context: context),
                         text: outgoingMailModel.SentTime.Value
                         .ToLocal(
                             context: context,
                             format: Displays.Get(
                                 context: context,
                                 id: "YmdahmFormat")),
                         fieldCss: "field-auto")
                     .FieldText(
                         controlId: string.Empty,
                         labelText: Displays.OutgoingMails_From(context: context),
                         text: outgoingMailModel.From.ToString(),
                         fieldCss: "field-auto-thin")
                     .OutgoingMailListItemDestination(
                         outgoingMailModel.To, Displays.OutgoingMails_To(context: context))
                     .OutgoingMailListItemDestination(
                         outgoingMailModel.Cc, Displays.OutgoingMails_Cc(context: context))
                     .OutgoingMailListItemDestination(
                         outgoingMailModel.Bcc, Displays.OutgoingMails_Bcc(context: context))
                     .FieldText(
                         controlId: string.Empty,
                         labelText: Displays.OutgoingMails_Title(context: context),
                         text: outgoingMailModel.Title.Value,
                         fieldCss: "field-wide")
                     .FieldMarkUp(
                         controlId: string.Empty,
                         labelText: Displays.OutgoingMails_Body(context: context),
                         text: outgoingMailModel.Body,
                         fieldCss: "field-wide")
                     .Div(
                         css: "command-right",
                         action: () => hb
                         .Button(
                             text: Displays.Reply(context: context),
                             controlCss: "button-icon",
                             onClick: "$p.openOutgoingMailReplyDialog($(this));",
                             dataId: outgoingMailModel.OutgoingMailId.ToString(),
                             icon: "ui-icon-mail-closed",
                             action: "Reply",
                             method: "put"),
                         _using: context.CanSendMail(ss: ss)))));
 }
Example #7
0
        /// <summary>
        /// Fixed:
        /// </summary>
        private static void Initialize(
            this DemoModel demoModel, Context context, OutgoingMailModel outgoingMailModel)
        {
            var idHash   = new Dictionary <string, long>();
            var password = Strings.NewGuid().Sha512Cng();

            System.Threading.Tasks.Task.Run(() =>
            {
                demoModel.Initialize(context: context, idHash: idHash, password: password);
                outgoingMailModel.Send(context: context, ss: new SiteSettings());
            });
        }
 /// <summary>
 /// Fixed:
 /// </summary>
 private static string ReplyBody(OutgoingMailModel outgoingMailModel)
 {
     return(outgoingMailModel.AccessStatus == Databases.AccessStatuses.Selected
         ? Displays.OriginalMessage().Params(
                Location(),
                outgoingMailModel.From,
                outgoingMailModel.SentTime.DisplayValue.ToString(
                    Displays.Get("YmdahmsFormat"), Sessions.CultureInfo()),
                outgoingMailModel.Title.Value,
                outgoingMailModel.Body)
         : string.Empty);
 }
        /// <summary>
        /// Fixed:
        /// </summary>
        private static void Initialize(
            this DemoModel demoModel, OutgoingMailModel outgoingMailModel)
        {
            var idHash   = new Dictionary <string, long>();
            var loginId  = LoginId(demoModel, "User1");
            var password = Strings.NewGuid().Sha512Cng();

            System.Threading.Tasks.Task.Run(() =>
            {
                demoModel.Initialize(idHash, password);
                outgoingMailModel.Send();
            });
        }
 /// <summary>
 /// Fixed:
 /// </summary>
 private static string ReplyBody(Context context, OutgoingMailModel outgoingMailModel)
 {
     return(outgoingMailModel.AccessStatus == Databases.AccessStatuses.Selected
         ? Displays.OriginalMessage(context: context).Params(
                Locations.OutGoingMailAbsoluteUri(context: context),
                outgoingMailModel.From,
                outgoingMailModel.SentTime.DisplayValue.ToString(
                    Displays.Get(
                        context: context,
                        id: "YmdahmsFormat"),
                    context.CultureInfo()),
                outgoingMailModel.Title.Value,
                outgoingMailModel.Body)
         : string.Empty);
 }
Example #11
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public static string Send(string reference, long id)
        {
            if (!Contract.Mail())
            {
                return(Error.Types.Restricted.MessageJson());
            }
            var outgoingMailModel  = new OutgoingMailModel(reference, id);
            var invalidMailAddress = string.Empty;
            var invalid            = OutgoingMailValidators.OnSending(
                SiteSettingsUtilities.GetByReference(reference, id),
                outgoingMailModel,
                out invalidMailAddress);

            switch (invalid)
            {
            case Error.Types.None:
                break;

            case Error.Types.BadMailAddress:
            case Error.Types.ExternalMailAddress:
                return(invalid.MessageJson(invalidMailAddress));

            default:
                return(invalid.MessageJson());
            }
            var error = outgoingMailModel.Send();

            return(error.Has()
                ? error.MessageJson()
                : new OutgoingMailsResponseCollection(outgoingMailModel)
                   .CloseDialog()
                   .ClearFormData()
                   .Html("#OutgoingMailDialog", string.Empty)
                   .Val("#OutgoingMails_Title", string.Empty)
                   .Val("#OutgoingMails_Body", string.Empty)
                   .Prepend("#OutgoingMailsForm", new HtmlBuilder().OutgoingMailListItem(
                                outgoingMailModel,
                                selector: "#ImmediatelyAfterSending" + outgoingMailModel.OutgoingMailId))
                   .Message(Messages.MailTransmissionCompletion())
                   .ToJson());
        }
Example #12
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public static ErrorData OnSending(
            Context context, SiteSettings ss, OutgoingMailModel outgoingMailModel)
        {
            if (!context.CanSendMail(ss: ss))
            {
                return(new ErrorData(type: Error.Types.HasNotPermission));
            }
            if (Parameters.Mail.SmtpHost == "smtp.sendgrid.net" &&
                outgoingMailModel.To == string.Empty)
            {
                return(new ErrorData(type: Error.Types.RequireTo));
            }
            if ((outgoingMailModel.To +
                 outgoingMailModel.Cc +
                 outgoingMailModel.Bcc).Trim() == string.Empty)
            {
                return(new ErrorData(type: Error.Types.RequireMailAddresses));
            }
            var badTo = MailAddressValidators.BadMailAddress(
                addresses: outgoingMailModel.To);

            if (badTo.Type != Error.Types.None)
            {
                return(badTo);
            }
            var badCc = MailAddressValidators.BadMailAddress(
                addresses: outgoingMailModel.Cc);

            if (badCc.Type != Error.Types.None)
            {
                return(badCc);
            }
            var badBcc = MailAddressValidators.BadMailAddress(
                addresses: outgoingMailModel.Bcc);

            if (badBcc.Type != Error.Types.None)
            {
                return(badBcc);
            }
            var externalTo = MailAddressValidators.ExternalMailAddress(
                addresses: outgoingMailModel.To);

            if (externalTo.Type != Error.Types.None)
            {
                return(externalTo);
            }
            var externalCc = MailAddressValidators.ExternalMailAddress(
                addresses: outgoingMailModel.Cc);

            if (externalCc.Type != Error.Types.None)
            {
                return(externalCc);
            }
            var externalBcc = MailAddressValidators.ExternalMailAddress(
                addresses: outgoingMailModel.Bcc);

            if (externalBcc.Type != Error.Types.None)
            {
                return(externalBcc);
            }
            return(new ErrorData(type: Error.Types.None));
        }
        /// <summary>
        /// Fixed:
        /// </summary>
        public static System.Web.Mvc.ContentResult SendByApi(Context context, string reference, long id)
        {
            var itemModel = new ItemModel(
                context: context,
                referenceId: id);
            var siteModel = new SiteModel(
                context: context,
                siteId: itemModel.SiteId);
            var ss = SiteSettingsUtilities.Get(
                context: context,
                siteModel: siteModel,
                referenceId: itemModel.ReferenceId);
            var outgoingMailModel = new OutgoingMailModel(
                context: context,
                reference: reference,
                referenceId: id);
            var data = context.RequestDataString.Deserialize <OutgoingMailApiModel>();

            if (data == null)
            {
                return(ApiResults.Get(ApiResponses.BadRequest(context: context)));
            }
            if (!siteModel.WithinApiLimits())
            {
                return(ApiResults.Get(ApiResponses.OverLimitApi(
                                          context: context,
                                          siteId: itemModel.SiteId,
                                          limitPerSite: Parameters.Api.LimitPerSite)));
            }
            if (data.From != null)
            {
                outgoingMailModel.From = new System.Net.Mail.MailAddress(data.From);
            }
            if (data.To != null)
            {
                outgoingMailModel.To = data.To;
            }
            if (data.Cc != null)
            {
                outgoingMailModel.Cc = data.Cc;
            }
            if (data.Bcc != null)
            {
                outgoingMailModel.Bcc = data.Bcc;
            }
            if (data.Title != null)
            {
                outgoingMailModel.Title = new Title(data.Title);
            }
            if (data.Body != null)
            {
                outgoingMailModel.Body = data.Body;
            }
            var invalid = OutgoingMailValidators.OnSending(
                context: context,
                ss: ss,
                outgoingMailModel: outgoingMailModel);

            switch (invalid.Type)
            {
            case Error.Types.None: break;

            default:
                return(ApiResults.Error(
                           context: context,
                           errorData: invalid));
            }
            var errorData = outgoingMailModel.Send(
                context: context,
                ss: ss);

            switch (errorData.Type)
            {
            case Error.Types.None:
                SiteUtilities.UpdateApiCount(context: context, ss: ss);
                return(ApiResults.Success(
                           id: id,
                           limitPerDate: Parameters.Api.LimitPerSite,
                           limitRemaining: Parameters.Api.LimitPerSite - ss.ApiCount,
                           message: Displays.MailTransmissionCompletion(
                               context: context,
                               data: outgoingMailModel.Title.DisplayValue)));

            default:
                return(ApiResults.Error(
                           context: context,
                           errorData: errorData));
            }
        }
        /// <summary>
        /// Fixed:
        /// </summary>
        private static HtmlBuilder Editor(
            this HtmlBuilder hb,
            Context context,
            SiteSettings ss,
            OutgoingMailModel outgoingMailModel)
        {
            var outgoingMailSs = SiteSettingsUtilities
                                 .OutgoingMailsSiteSettings(context: context);
            var titleColumn = outgoingMailSs.GetColumn(
                context: context,
                columnName: "Title");
            var bodyColumn = outgoingMailSs.GetColumn(
                context: context,
                columnName: "Body");

            return(hb
                   .FieldBasket(
                       controlId: "OutgoingMails_To",
                       fieldCss: "field-wide",
                       controlCss: "control-basket cf",
                       labelAction: () => hb
                       .Text(text: Displays.OutgoingMails_To(context: context)))
                   .FieldBasket(
                       controlId: "OutgoingMails_Cc",
                       fieldCss: "field-wide",
                       controlCss: "control-basket cf",
                       labelAction: () => hb
                       .Text(text: Displays.OutgoingMails_Cc(context: context)))
                   .FieldBasket(
                       controlId: "OutgoingMails_Bcc",
                       fieldCss: "field-wide",
                       controlCss: "control-basket cf",
                       labelAction: () => hb
                       .Text(text: Displays.OutgoingMails_Bcc(context: context)))
                   .FieldTextBox(
                       controlId: "OutgoingMails_Title",
                       fieldCss: "field-wide",
                       controlCss: " always-send",
                       labelText: Displays.OutgoingMails_Title(context: context),
                       text: ReplyTitle(outgoingMailModel),
                       validateRequired: titleColumn.ValidateRequired ?? false,
                       validateMaxLength: titleColumn.ValidateMaxLength ?? 0)
                   .FieldTextBox(
                       textType: HtmlTypes.TextTypes.MultiLine,
                       controlId: "OutgoingMails_Body",
                       fieldCss: "field-wide",
                       controlCss: " always-send h300",
                       labelText: Displays.OutgoingMails_Body(context: context),
                       text: ReplyBody(
                           context: context,
                           outgoingMailModel: outgoingMailModel),
                       validateRequired: bodyColumn.ValidateRequired ?? false,
                       validateMaxLength: bodyColumn.ValidateMaxLength ?? 0)
                   .P(css: "message-dialog")
                   .Div(css: "command-center", action: () => hb
                        .Button(
                            controlId: "OutgoingMails_Send",
                            controlCss: "button-icon validate",
                            text: Displays.Send(context: context),
                            onClick: "$p.sendMail($(this));",
                            icon: "ui-icon-mail-closed",
                            action: "Send",
                            method: "post",
                            confirm: "ConfirmSendMail")
                        .Button(
                            controlId: "OutgoingMails_Cancel",
                            controlCss: "button-icon",
                            text: Displays.Cancel(context: context),
                            onClick: "$p.closeDialog($(this));",
                            icon: "ui-icon-cancel"))
                   .Hidden(
                       controlId: "OutgoingMails_Location",
                       value: Locations.OutGoingMailAbsoluteUri(context: context))
                   .Hidden(
                       controlId: "OutgoingMails_Reply",
                       value: outgoingMailModel.AccessStatus == Databases.AccessStatuses.Selected
                        ? "1"
                        : "0")
                   .Hidden(
                       controlId: "To",
                       value: MailDefault(
                           context: context,
                           ss: ss,
                           outgoingMailModel: outgoingMailModel,
                           mailDefault: ss.MailToDefault,
                           type: "to"))
                   .Hidden(
                       controlId: "Cc",
                       value: MailDefault(
                           context: context,
                           ss: ss,
                           outgoingMailModel: outgoingMailModel,
                           mailDefault: ss.MailCcDefault,
                           type: "cc"))
                   .Hidden(
                       controlId: "Bcc",
                       value: MailDefault(
                           context: context,
                           ss: ss,
                           outgoingMailModel: outgoingMailModel,
                           mailDefault: ss.MailBccDefault,
                           type: "bcc")));
        }
        /// <summary>
        /// Fixed:
        /// </summary>
        public static string Editor(Context context, string reference, long id)
        {
            var ss = SiteSettingsUtilities.GetByReference(
                context: context,
                reference: reference,
                referenceId: id);

            if (context.ContractSettings.Mail == false)
            {
                return(Error.Types.Restricted.MessageJson(context: context));
            }
            if (MailAddressUtilities.Get(
                    context: context,
                    userId: context.UserId) == string.Empty)
            {
                return(new ResponseCollection()
                       .CloseDialog()
                       .Message(Messages.MailAddressHasNotSet(context: context))
                       .ToJson());
            }
            var invalid = OutgoingMailValidators.OnEditing(
                context: context,
                ss: ss);

            switch (invalid)
            {
            case Error.Types.None: break;

            default: return(invalid.MessageJson(context: context));
            }
            var outgoingMailModel = new OutgoingMailModel().Get(
                context: context,
                where : Rds.OutgoingMailsWhere().OutgoingMailId(
                    context.Forms.Long("OutgoingMails_OutgoingMailId")));
            var hb = new HtmlBuilder();

            return(new ResponseCollection()
                   .Html("#OutgoingMailDialog", hb
                         .Div(id: "MailEditorTabsContainer", action: () => hb
                              .Ul(id: "MailEditorTabs", action: () => hb
                                  .Li(action: () => hb
                                      .A(
                                          href: "#FieldSetMailEditor",
                                          text: Displays.Mail(context: context)))
                                  .Li(action: () => hb
                                      .A(
                                          href: "#FieldSetAddressBook",
                                          text: Displays.AddressBook(context: context))))
                              .FieldSet(id: "FieldSetMailEditor", action: () => hb
                                        .Form(
                                            attributes: new HtmlAttributes()
                                            .Id("OutgoingMailForm")
                                            .Action(Locations.Action(
                                                        context: context,
                                                        table: reference,
                                                        id: id,
                                                        controller: "OutgoingMails")),
                                            action: () => hb
                                            .Editor(
                                                context: context,
                                                ss: ss,
                                                outgoingMailModel: outgoingMailModel)))
                              .FieldSet(id: "FieldSetAddressBook", action: () => hb
                                        .Form(
                                            attributes: new HtmlAttributes()
                                            .Id("OutgoingMailDestinationForm")
                                            .Action(Locations.Action(
                                                        context: context,
                                                        table: reference,
                                                        id: id,
                                                        controller: "OutgoingMails")),
                                            action: () => hb
                                            .Destinations(context: context, ss: ss)))))
                   .Invoke("initOutgoingMailDialog")
                   .Focus("#OutgoingMails_Body")
                   .ToJson());
        }
Example #16
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public static Error.Types OnSending(
            Context context, SiteSettings ss, OutgoingMailModel outgoingMailModel, out string data)
        {
            data = null;
            if (!context.CanSendMail(ss: ss))
            {
                return(Error.Types.HasNotPermission);
            }
            if (DefinitionAccessor.Parameters.Mail.SmtpHost == "smtp.sendgrid.net" &&
                outgoingMailModel.To == string.Empty)
            {
                return(Error.Types.RequireTo);
            }
            if ((outgoingMailModel.To +
                 outgoingMailModel.Cc +
                 outgoingMailModel.Bcc).Trim() == string.Empty)
            {
                return(Error.Types.RequireMailAddresses);
            }
            var badTo = MailAddressValidators.BadMailAddress(
                context: context,
                addresses: outgoingMailModel.To,
                data: out data);

            if (badTo != Error.Types.None)
            {
                return(badTo);
            }
            var badCc = MailAddressValidators.BadMailAddress(
                context: context,
                addresses: outgoingMailModel.Cc,
                data: out data);

            if (badCc != Error.Types.None)
            {
                return(badCc);
            }
            var badBcc = MailAddressValidators.BadMailAddress(
                context: context,
                addresses: outgoingMailModel.Bcc,
                data: out data);

            if (badBcc != Error.Types.None)
            {
                return(badBcc);
            }
            var externalTo = MailAddressValidators.ExternalMailAddress(
                context: context,
                addresses: outgoingMailModel.To,
                data: out data);

            if (externalTo != Error.Types.None)
            {
                return(externalTo);
            }
            var externalCc = MailAddressValidators.ExternalMailAddress(
                context: context,
                addresses: outgoingMailModel.Cc,
                data: out data);

            if (externalCc != Error.Types.None)
            {
                return(externalCc);
            }
            var externalBcc = MailAddressValidators.ExternalMailAddress(
                context: context,
                addresses: outgoingMailModel.Bcc,
                data: out data);

            if (externalBcc != Error.Types.None)
            {
                return(externalBcc);
            }
            return(Error.Types.None);
        }