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); }
/// <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); }
/// <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))))); }
/// <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); }
/// <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()); }
/// <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()); }
/// <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); }