/// <summary> /// If you are sending messages from various points across your code, the /// MessageBusFactory will create multiple thread-safe object instances to /// efficiently batch transactions, resulting in higher throughput. /// /// define one or more template message param arrays. merge fields and custom headers /// are appended to each message after construction /// </summary> void SendExampleTemplates() { var msg1 = new MessageBusTemplateEmail { ToEmail = "*****@*****.**", ToName = "recipient1", TemplateKey = "" }; msg1.MergeFields["%FIELD1"] = "value1"; msg1.MergeFields["%FIELD2"] = "value2"; msg1.CustomHeaders["HEADER1"] = "header1"; msg1.CustomHeaders["HEADER2"] = "header2"; var msg2 = new MessageBusTemplateEmail { ToEmail = "*****@*****.**", ToName = "recipient2", TemplateKey = "" }; msg2.MergeFields["%FIELD1"] = "value1"; msg2.MergeFields["%FIELD2"] = "value2"; msg2.CustomHeaders["HEADER1"] = "header1"; msg2.CustomHeaders["HEADER2"] = "header2"; var templates = new[] { msg1, msg2 }; SendMessages(templates); }
public BatchTemplateMessage(MessageBusTemplateEmail email) { mergeFields = email.MergeFields; toEmail = email.ToEmail; toName = email.ToName; customHeaders = email.CustomHeaders; templateKey = email.TemplateKey; }
public void ThrowsAnErrorIfTheSuppliedMergeFieldsDoNotStartAndEndWithPercentSymbols() { try { var email = new MessageBusTemplateEmail { TemplateKey = "TEST", ToEmail = "*****@*****.**" }; email.MergeFields.Add("EMAIL", "*****@*****.**"); EmailClient.Send(email); } catch (MessageBusValidationFailedException) { return; } Assert.Fail("Expected Exception to be thrown"); }
public void ChecksForThePresenceOfMergeFieldsWhenATemplateKeyIsSpecifiedAndWorksIfPresent() { var email = new MessageBusTemplateEmail { TemplateKey = "TEST", ToEmail = "*****@*****.**" }; email.MergeFields.Add("%EMAIL%", "*****@*****.**"); EmailClient.Send(email); }
private void Validate(MessageBusTemplateEmail email) { if (SkipValidation) return; string msg = ""; if (String.IsNullOrEmpty(ApiKey)) { msg = "ApiKey is required"; } if (String.IsNullOrEmpty(email.TemplateKey)) { msg = "A TemplateKey must be supplied when sending templated email"; } if (String.IsNullOrEmpty(email.ToEmail)) { msg = "A ToEmail must be supplied when sending templated email"; } if (email.MergeFields.Count > 0) { if (email.MergeFields.Any(pair => !pair.Key.StartsWith("%") || !pair.Key.EndsWith("%"))) { msg = "Merge Fields must be surrounded with %% e.g. %FIELD%"; } } if (msg.Length > 0) { Logger.error(msg); throw new MessageBusValidationFailedException(msg); } }
public bool Send(MessageBusTemplateEmail email) { Validate(email); return Send(new BatchTemplateMessage(email)); }