Esempio n. 1
0
 public void StartTriggeredSend(string externalKey)
 {
     using (var triggeredSendDefinitionClient = new TriggeredSendDefinitionClient(_config))
     {
         triggeredSendDefinitionClient.StartTriggeredSend(externalKey);
     }
 }
        public int Create(string externalKey, string layoutHtml)
        {
            if (externalKey.Length > Guid.Empty.ToString().Length)
            {
                throw new ArgumentException("externalKey too long, should be max length of " + Guid.Empty.ToString().Length, "externalKey");
            }

            if (triggeredSendDefinitionClient.DoesTriggeredSendDefinitionExist(externalKey))
            {
                throw new Exception(string.Format("A TriggeredSendDefinition with external key {0} already exsits", externalKey));
            }

            var dataExtensionExternalKey = ExternalKeyGenerator.GenerateExternalKey("data-extension-" + externalKey);

            if (!dataExtensionClient.DoesDataExtensionExist(dataExtensionExternalKey))
            {
                var dataExtensionTemplateObjectId = dataExtensionClient.RetrieveTriggeredSendDataExtensionTemplateObjectId();

                var regex   = new Regex(@"(?<=%%)[^\s].*?[^\s]?(?=%%)");
                var matches = regex.Matches(layoutHtml);
                var dataExtensionFieldNames = new HashSet <string> {
                    "Subject", "Body", "Head"
                };

                for (var i = 0; i < matches.Count; i++)
                {
                    dataExtensionFieldNames.Add(matches[i].Value);
                }

                dataExtensionClient.CreateDataExtension(dataExtensionTemplateObjectId,
                                                        dataExtensionExternalKey,
                                                        "triggeredsend-" + externalKey,
                                                        dataExtensionFieldNames);
            }


            var emailTempalteExternalKey = ExternalKeyGenerator.GenerateExternalKey("email-template" + externalKey);
            var emailTemplateId          = emailTemplateClient.RetrieveEmailTemplateId(emailTempalteExternalKey);

            if (emailTemplateId == 0)
            {
                layoutHtml     += EmailContentHelper.GetOpenTrackingTag() + EmailContentHelper.GetCompanyPhysicalMailingAddressTags();
                emailTemplateId = emailTemplateClient.CreateEmailTemplate(emailTempalteExternalKey, "template-" + externalKey, layoutHtml);
            }

            var emailId = emailRequestClient.CreateEmailFromTemplate(emailTemplateId, "email-" + externalKey, "%%Subject%%", new KeyValuePair <string, string>("dynamicArea", "%%Body%%"));

            var deliveryProfileExternalKey = ExternalKeyGenerator.GenerateExternalKey("blank-delivery-profile");

            deliveryProfileClient.TryCreateBlankDeliveryProfile(deliveryProfileExternalKey);
            var triggeredSendDefinition = triggeredSendDefinitionClient.CreateTriggeredSendDefinition(externalKey, emailId, dataExtensionExternalKey, deliveryProfileExternalKey, externalKey, externalKey, "High");

            triggeredSendDefinitionClient.StartTriggeredSend(externalKey);
            return(triggeredSendDefinition);
        }