public void CreateDataExtension(string dataExtensionTemplateObjectId, string externalKey, string name, HashSet <string> fields) { var de = new ExactTargetApi.DataExtension { Client = _config.ClientId.HasValue ? new ClientID { ID = _config.ClientId.Value, IDSpecified = true } : null, Name = name, CustomerKey = externalKey, Template = new DataExtensionTemplate { ObjectID = dataExtensionTemplateObjectId }, Fields = fields.Select(field => new DataExtensionField { Name = field, FieldType = DataExtensionFieldType.Text, FieldTypeSpecified = true, }).ToArray(), }; string requestId, status; var result = _client.Create(new CreateOptions(), new APIObject[] { de }, out requestId, out status); ExactTargetResultChecker.CheckResult(result.FirstOrDefault()); //we expect only one result because we've sent only one APIObject }
public int CreateEmail(string externalKey, string emailName, string subject, string htmlBody) { var email = new ExactTargetApi.Email { Client = _config.ClientId.HasValue ? new ClientID { ID = _config.ClientId.Value, IDSpecified = true } : null, Name = emailName, CustomerKey = externalKey, IsHTMLPaste = true, IsHTMLPasteSpecified = true, SyncTextWithHTML = true, SyncTextWithHTMLSpecified = true, HTMLBody = htmlBody, Subject = subject, CharacterSet = "UTF-8" }; string requestId, status; var result = _client.Create(new CreateOptions(), new APIObject[] { email }, out requestId, out status); ExactTargetResultChecker.CheckResult(result.FirstOrDefault()); //we expect only one result because we've sent only one APIObject return(result.First().NewID); }
public string TryCreateBlankDeliveryProfile(string externalKey) { try { var dp = new ExactTargetApi.DeliveryProfile { Client = _config.ClientId.HasValue ? new ClientID { ID = _config.ClientId.Value, IDSpecified = true } : null, Name = "Blank delivery profile", Description = "Blank delivery profile", CustomerKey = externalKey, FooterSalutationSource = SalutationSourceEnum.None, FooterSalutationSourceSpecified = true, HeaderSalutationSource = SalutationSourceEnum.None, HeaderSalutationSourceSpecified = true, SourceAddressType = DeliveryProfileSourceAddressTypeEnum.DefaultPrivateIPAddress, SourceAddressTypeSpecified = true }; string requestId, status; var result = _client.Create(new CreateOptions(), new APIObject[] { dp }, out requestId, out status); ExactTargetResultChecker.CheckResult(result.FirstOrDefault()); //we expect only one result because we've sent only one APIObject return(result.First().NewObjectID); } catch { return(Guid.Empty.ToString()); } }
public static void CreateDateExtension(SoapClient soapClient, string iDataExtensionName, string iDataExtensionCustomerKey) { DataExtension de = new DataExtension(); de.Name = iDataExtensionName; de.CustomerKey = iDataExtensionCustomerKey; de.IsSendable = true; de.IsSendableSpecified = true; DataExtensionField def = new DataExtensionField(); def.Name = "EMAIL"; de.SendableDataExtensionField = def; //Sendable SubscriberField will be "Email Address" by default //If SubscriberKey option is enabled then value needs to be "Subscriber Key" ExactTargetSOAPAPI.Attribute attr = new ExactTargetSOAPAPI.Attribute(); attr.Name = "Email Address"; de.SendableSubscriberField = attr; DataExtensionField emailField = new DataExtensionField(); emailField.Name = "EMAIL"; emailField.FieldType = DataExtensionFieldType.EmailAddress; emailField.FieldTypeSpecified = true; emailField.IsRequired = true; emailField.IsRequiredSpecified = true; emailField.IsPrimaryKey = true; emailField.IsPrimaryKeySpecified = true; emailField.MaxLength = 50; emailField.MaxLengthSpecified = true; DataExtensionField fnameField = new DataExtensionField(); fnameField.Name = "FIRST NAME"; fnameField.FieldType = DataExtensionFieldType.Text; fnameField.FieldTypeSpecified = true; DataExtensionField lnameField = new DataExtensionField(); lnameField.Name = "LAST NAME"; lnameField.FieldType = DataExtensionFieldType.Text; lnameField.FieldTypeSpecified = true; de.Fields = new DataExtensionField[] { emailField, fnameField, lnameField }; string sStatus = ""; string sRequestId = ""; CreateResult[] aoResults = soapClient.Create(new CreateOptions(), new APIObject[] { de }, out sRequestId, out sStatus); Console.WriteLine("Status: " + sStatus); Console.WriteLine("Request ID: " + sRequestId); foreach (CreateResult cr in aoResults) { Console.WriteLine("StatusCode: " + cr.StatusCode); Console.WriteLine("ErrorCode: " + cr.ErrorCode); Console.WriteLine("StatusMessage: " + cr.StatusMessage); } }
public static void CreateImportDefinition(SoapClient soapClient, string iImportDefinitionName, string iImportDefinitionCustomerKey, string iTargetDataExtensionCustomerKey, string iImportFileName) { ImportDefinition id = new ImportDefinition(); id.Name = iImportDefinitionName; id.CustomerKey = iImportDefinitionCustomerKey; // Optional value, if AllowErrors is true then it will not stop the import when // a single row has an error id.AllowErrors = true; id.AllowErrorsSpecified = true; // For this example, we are sending to a data extension // Value for CustomerKey will be for a data extension already created in your account DataExtension de = new DataExtension(); de.CustomerKey = iTargetDataExtensionCustomerKey; id.DestinationObject = de; AsyncResponse ar = new AsyncResponse(); ar.ResponseType = AsyncResponseType.email; ar.ResponseAddress = "*****@*****.**"; id.Notification = ar; FileTransferLocation ftl = new FileTransferLocation(); ftl.CustomerKey = "ExactTarget Enhanced FTP"; id.RetrieveFileTransferLocation = ftl; // Specify how the import will be handled // If data extension has no primary key specified then only "Overwrite" will work id.UpdateType = ImportDefinitionUpdateType.AddAndUpdate; id.UpdateTypeSpecified = true; id.FieldMappingType = ImportDefinitionFieldMappingType.InferFromColumnHeadings; id.FieldMappingTypeSpecified = true; id.FileSpec = iImportFileName; id.FileType = FileType.CSV; id.FileTypeSpecified = true; string sStatus = ""; string sRequestId = ""; CreateResult[] aoResults = soapClient.Create(new CreateOptions(), new APIObject[] { id }, out sRequestId, out sStatus); Console.WriteLine("Status: " + sStatus); Console.WriteLine("Request ID: " + sRequestId); foreach (CreateResult cr in aoResults) { Console.WriteLine("StatusCode: " + cr.StatusCode); Console.WriteLine("ErrorCode: " + cr.ErrorCode); Console.WriteLine("StatusMessage: " + cr.StatusMessage); } }
public int CreateTriggeredSendDefinition( string externalId, int emailId, string dataExtensionCustomerKey, string deliveryProfileCustomerKey, string name, string description, bool NeedCC = false, bool NeedBcc = false) { var ts = new ETService.TriggeredSendDefinition { Client = _config.ClientId.HasValue ? new ClientID { ID = _config.ClientId.Value, IDSpecified = true } : null, Email = new ETService.Email { ID = emailId, IDSpecified = true }, SendSourceDataExtension = new ETService.DataExtension { CustomerKey = dataExtensionCustomerKey }, Name = name, Description = description, CustomerKey = externalId, TriggeredSendStatus = TriggeredSendStatusEnum.Active, SendClassification = new SendClassification { CustomerKey = "Default Transactional" }, IsMultipart = true, IsMultipartSpecified = true, DeliveryProfile = new ETService.DeliveryProfile { CustomerKey = deliveryProfileCustomerKey }, IsWrapped = true, IsWrappedSpecified = true }; if (NeedCC) { ts.CCEmail = "%%CCAddress%%"; } string requestId, status; var result = _client.Create(new CreateOptions(), new APIObject[] { ts }, out requestId, out status); ExactTargetResultChecker.CheckResult(result.FirstOrDefault()); return(result != null?result.First().NewID : 0); }
public static void CreateAutomation(SoapClient soapClient, string iEmailSendDefinitionName, string iEmailSendDefinitionCustomerKey, string iEmailSendDefinitionObjectID) { Automation automation = new Automation(); automation.Name = "SOAPAPI Test2_" + Guid.NewGuid().ToString(); // CustomerKey can be any string value, GUID is only used for example purposes automation.CustomerKey = Guid.NewGuid().ToString(); automation.Description = "SOAP API Created Example"; automation.AutomationType = "scheduled"; AutomationActivity activityOne = new AutomationActivity(); activityOne = new AutomationActivity(); // This is the ObjectID of the Definition Object activityOne.ObjectID = iEmailSendDefinitionObjectID; // This is the Name of the Definition Object activityOne.Name = iEmailSendDefinitionName; activityOne.Definition = new APIObject(); EmailSendDefinition activityOneDefinition = new EmailSendDefinition(); // Again this is the ObjectID of the Definition Object activityOneDefinition.ObjectID = iEmailSendDefinitionObjectID; // Again this is the Name of the Definition Object activityOneDefinition.Name = iEmailSendDefinitionName; activityOneDefinition.CustomerKey = iEmailSendDefinitionCustomerKey; activityOne.ActivityObject = activityOneDefinition; AutomationTask taskOne = new AutomationTask(); taskOne.Name = "Task 1"; taskOne.Activities = new AutomationActivity[] { activityOne }; automation.AutomationTasks = new AutomationTask[] { taskOne }; string RequestID = String.Empty; string OverallStatus = String.Empty; CreateResult[] createResults = soapClient.Create(new CreateOptions(), new APIObject[] { automation }, out RequestID, out OverallStatus); Console.WriteLine("Status: " + OverallStatus); foreach (CreateResult cr in createResults) { Console.WriteLine("NewObjectID: " + cr.NewObjectID); Console.WriteLine("StatusCode: " + cr.StatusCode); Console.WriteLine("ErrorCode: " + cr.ErrorCode); Console.WriteLine("StatusMessage: " + cr.StatusMessage); } }
public static void CreateTriggeredSend(SoapClient soapClient, string iTriggeredSendCustomerKey, string iEmailAddress, string iFirstName, string iLastName) { TriggeredSend ts = new TriggeredSend(); TriggeredSendDefinition tsd = new TriggeredSendDefinition(); tsd.CustomerKey = iTriggeredSendCustomerKey; ts.TriggeredSendDefinition = tsd; Subscriber sub = new Subscriber(); sub.EmailAddress = iEmailAddress; sub.SubscriberKey = iEmailAddress; ExactTargetSOAPAPI.Attribute firstName = new ExactTargetSOAPAPI.Attribute(); firstName.Name = "First Name"; firstName.Value = iFirstName; ExactTargetSOAPAPI.Attribute lastName = new ExactTargetSOAPAPI.Attribute(); lastName.Name = "Last Name"; lastName.Value = iLastName; sub.Attributes = new ExactTargetSOAPAPI.Attribute[] { firstName, lastName }; ts.Subscribers = new Subscriber[] { sub }; string sStatus = ""; string sRequestId = ""; CreateResult[] aoResults = soapClient.Create(new CreateOptions(), new APIObject[] { ts }, out sRequestId, out sStatus); Console.WriteLine("Status: " + sStatus); Console.WriteLine("Request ID: " + sRequestId); foreach (TriggeredSendCreateResult tscr in aoResults) { if (tscr.SubscriberFailures != null) { foreach (SubscriberResult sr in tscr.SubscriberFailures) { Console.WriteLine("ErrorCode: " + sr.ErrorCode); Console.WriteLine("ErrorDescription: " + sr.ErrorDescription); } } } }
public int CreateTriggeredSendDefinition( string externalId, int emailId, string dataExtensionCustomerKey, string deliveryProfileCustomerKey, string name, string description, string priority = "") { var ts = new ExactTargetApi.TriggeredSendDefinition { Client = _config.ClientId.HasValue ? new ClientID { ID = _config.ClientId.Value, IDSpecified = true } : null, Email = new ExactTargetApi.Email { ID = emailId, IDSpecified = true }, SendSourceDataExtension = new ExactTargetApi.DataExtension { CustomerKey = dataExtensionCustomerKey }, Name = name, Description = description, CustomerKey = externalId, TriggeredSendStatus = TriggeredSendStatusEnum.Active, SendClassification = new SendClassification { CustomerKey = "Default Transactional" }, IsMultipart = true, IsMultipartSpecified = true, DeliveryProfile = new ExactTargetApi.DeliveryProfile { CustomerKey = deliveryProfileCustomerKey }, IsWrapped = true, IsWrappedSpecified = true, Priority = priority }; string requestId, status; var result = _client.Create(new CreateOptions(), new APIObject[] { ts }, out requestId, out status); ExactTargetResultChecker.CheckResult(result.FirstOrDefault()); return(result.First().NewID); }
public static void CreateEmailSendDefinition(SoapClient soapClient, string EmailSendDefinitionName, string EmailSendDefinitionCustomerKey, int EmailID, string SendClassificationCustomerKey, string DataExtensionCustomerKey) { EmailSendDefinition esd = new EmailSendDefinition(); esd.Name = EmailSendDefinitionName; esd.CustomerKey = EmailSendDefinitionCustomerKey; Email em = new Email(); em.ID = EmailID; em.IDSpecified = true; esd.Email = em; SendDefinitionList sdl = new SendDefinitionList(); sdl.SendDefinitionListType = SendDefinitionListTypeEnum.SourceList; sdl.SendDefinitionListTypeSpecified = true; sdl.CustomerKey = DataExtensionCustomerKey; sdl.DataSourceTypeID = DataSourceTypeEnum.CustomObject; sdl.DataSourceTypeIDSpecified = true; esd.SendDefinitionList = new SendDefinitionList[] { sdl }; SendClassification sc = new SendClassification(); sc.CustomerKey = SendClassificationCustomerKey; esd.SendClassification = sc; string sStatus = ""; string sRequestId = ""; CreateResult[] aoResults = soapClient.Create(new CreateOptions(), new APIObject[] { esd }, out sRequestId, out sStatus); Console.WriteLine("Status: " + sStatus); Console.WriteLine("Request ID: " + sRequestId); foreach (CreateResult cr in aoResults) { Console.WriteLine("StatusCode: " + cr.StatusCode); Console.WriteLine("ErrorCode: " + cr.ErrorCode); Console.WriteLine("StatusMessage: " + cr.StatusMessage); } }
public int CreateEmailTemplate(string externalKey, string name, string html) { var template = new Template { Client = _config.ClientId.HasValue ? new ClientID { ID = _config.ClientId.Value, IDSpecified = true } : null, TemplateName = name, CustomerKey = externalKey, LayoutHTML = html, }; string requestId, status; var result = _client.Create(new CreateOptions(), new APIObject[] { template }, out requestId, out status); ExactTargetResultChecker.CheckResult(result.FirstOrDefault()); //we expect only one result because we've sent only one APIObject return(result.First().NewID); }
public static void CreateEmailSendDefinition(SoapClient soapClient, string EmailSendDefinitionName, string EmailSendDefinitionCustomerKey, int EmailID, string SendClassificationCustomerKey, string DataExtensionCustomerKey) { EmailSendDefinition esd = new EmailSendDefinition(); esd.Name = EmailSendDefinitionName; esd.CustomerKey = EmailSendDefinitionCustomerKey; Email em = new Email(); em.ID = EmailID; em.IDSpecified = true; esd.Email = em; SendDefinitionList sdl = new SendDefinitionList(); sdl.SendDefinitionListType = SendDefinitionListTypeEnum.SourceList; sdl.SendDefinitionListTypeSpecified = true; sdl.CustomerKey = DataExtensionCustomerKey; sdl.DataSourceTypeID = DataSourceTypeEnum.CustomObject; sdl.DataSourceTypeIDSpecified = true; esd.SendDefinitionList = new SendDefinitionList[] {sdl}; SendClassification sc = new SendClassification(); sc.CustomerKey = SendClassificationCustomerKey; esd.SendClassification = sc; string sStatus = ""; string sRequestId = ""; CreateResult[] aoResults = soapClient.Create(new CreateOptions(), new APIObject[] { esd }, out sRequestId, out sStatus); Console.WriteLine("Status: " + sStatus); Console.WriteLine("Request ID: " + sRequestId); foreach (CreateResult cr in aoResults) { Console.WriteLine("StatusCode: " + cr.StatusCode); Console.WriteLine("ErrorCode: " + cr.ErrorCode); Console.WriteLine("StatusMessage: " + cr.StatusMessage); } }
private static void SendEmail(ref SoapClient client, TriggeredSendDefinition tsd, ref StringBuilder sbReturnString, Subscriber newSub) { TriggeredSend ts = new TriggeredSend(); ts.TriggeredSendDefinition = tsd; ts.Subscribers = new Subscriber[] { newSub }; string tsRequestID = ""; string tsStatus = ""; try { //Call the Create method on the TriggeredSend object CreateResult[] tsResults = client.Create(new CreateOptions(), new APIObject[] { ts }, out tsRequestID, out tsStatus); //Display Results Log.Info("[EXACTTARGET] Overall Create Status: " + tsResults, ""); Log.Info("[EXACTTARGET] Number of Results: " + tsResults.Length, ""); sbReturnString.Append("<br />[EXACTTARGET] Overall Create Status: " + tsResults).AppendLine(); sbReturnString.Append("<br />[EXACTTARGET] Number of Results: " + tsResults.Length).AppendLine(); //lblMessage.Text += "Overall Update Status: " + tsStatus; //lblMessage.Text += "<br/>"; //lblMessage.Text += "Number of Results: " + tsResults.Length; //lblMessage.Text += "<br/>"; //Loop through each object returned and display the StatusMessage foreach (TriggeredSendCreateResult tscr in tsResults) { Log.Info("[EXACTTARGET] Status Message: " + tscr.StatusMessage.ToString(), ""); sbReturnString.Append("<br />[EXACTTARGET] Status Message: " + tscr.StatusMessage).AppendLine(); if (tscr.SubscriberFailures != null) { sbReturnString.Append("<br/>[EXACTTARGET] Subscriber failures: <br/>"); foreach (SubscriberResult sr in tscr.SubscriberFailures) { Log.Info(String.Format("[EXACTTARGET] Subscriber failure : ({0}) {1}", sr.ErrorCode, sr.ErrorDescription), ""); sbReturnString.Append("<br/>[EXACTTARGET] ErrorDescription: " + sr.ErrorDescription); sbReturnString.Append("<br/>[EXACTTARGET] Error Code: " + sr.ErrorCode + "<br />"); } } } } catch (Exception exCreate) { Log.Error("<br />[EXACTTARGET] CREATE TS ERROR: " + exCreate.Message.ToString(), exCreate, "something went wrong"); //sbReturnString.Append("[EXACTTARGET] CREATE TS ERROR: " + exCreate.Message).AppendLine(); //lblMessage.Text += "<br/><br/>CREATE TS ERROR:<br/>" + exCreate.Message; throw; } }
private static string GetCreateResult(ref SoapClient client, TriggeredSendDefinition tsd, ref StringBuilder sbReturnString) { string cRequestID = String.Empty; string cStatus = String.Empty; try { //Call the Create method on the TriggeredSendDefinition object CreateResult[] cResults = client.Create(new CreateOptions(), new APIObject[] { tsd }, out cRequestID, out cStatus); Log.Info("[EXACTTARGET] Overall Create Status: " + cStatus, ""); Log.Info("[EXACTTARGET] Number of Results: " + cResults.Length, ""); sbReturnString.Append("[EXACTTARGET] Overall Create Status: " + cStatus).AppendLine(); sbReturnString.Append("[EXACTTARGET] Number of Results: " + cResults.Length).AppendLine(); ////Display Results //lblMessage.Text += "Overall Create Status: " + cStatus; //lblMessage.Text += "<br/>"; //lblMessage.Text += "Number of Results: " + cResults.Length; //lblMessage.Text += "<br/>"; //Loop through each object returned and display the StatusMessage foreach (CreateResult cr in cResults) { Log.Info("[EXACTTARGET] Status Message: " + cr.StatusMessage, ""); sbReturnString.Append("[EXACTTARGET] Status Message: " + cr.StatusMessage).AppendLine(); //lblMessage.Text += "Status Message: " + cr.StatusMessage; //lblMessage.Text += "<br/>"; } } catch (Exception exCreate) { //Set Message Log.Error("[EXACTTARGET] CREATE TSD ERROR: " + exCreate.Message.ToString(), exCreate, "something went wrong"); //lblMessage.Text += "<br/><br/>CREATE TSD ERROR:<br/>" + exCreate.Message; // sbReturnString.Append("[EXACTTARGET] CREATE TSD ERROR: " + exCreate.Message.ToString()).AppendLine(); throw; } return cStatus; }
//public IEnumerable<T> GetAll<T>(string[] properties) where T : APIObject //{ // RetrieveRequest request = new RetrieveRequest(); // request.ObjectType = typeof(T).Name; // request.Properties = properties; // foreach (var result in GetObjectsSoapBinding(request)) // { // yield return (T)result; // } //} public CreateResult[] Save <T>(T record, SaveAction action) where T : APIObject { CreateOptions co = new CreateOptions(); co.SaveOptions = new SaveOption[1]; co.SaveOptions[0] = new SaveOption(); co.SaveOptions[0].SaveAction = action; co.SaveOptions[0].PropertyName = "*"; string emailAddress = " "; Type t = record.GetType(); if (t.Name == "Subscriber") { PropertyInfo propertyInfo = t.GetProperty("EmailAddress"); emailAddress = propertyInfo.GetValue(record, null).ToString(); } string cRequestID; string overallStatus; var results = _client.Create(co, new APIObject[] { record }, out cRequestID, out overallStatus); if (!overallStatus.Equals("OK")) { if (results.Length > 0) { if (results[0].StatusMessage == "InvalidEmailAddress") { //Debug.WriteLine("Invalid Email"); //Log.Message("Invalid Email {0}", emailAddress); _logging.LogMessage(String.Format("Invalid Email {0}", emailAddress), "Inside Save<T> Method", "Email rejected by the ET system."); } else if (results[0].StatusMessage == "EmailAddressAlreadyExists") { //Debug.WriteLine("Email Address Already Exists"); //Log.Message("Email Address Already Exists {0}", emailAddress); _logging.LogMessage(String.Format("Email Address Already Exists {0}", emailAddress), "Inside Save<T> Method", "Email already exists in ET system"); } else if (results[0].StatusMessage == "OnListAlready") { //Debug.WriteLine("On List Already"); //Log.Message("On List Already", emailAddress); _logging.LogMessage(String.Format("Email Address Already on list {0}", emailAddress), "Inside Save<T> Method", "Email already on list in ET system"); } else if (results[0].StatusMessage == "TriggeredSpamFilter") { //Debug.WriteLine("Triggered Spam Filter"); //Log.Message("Triggered Spam Filter {0}", emailAddress); _logging.LogMessage(String.Format("Triggered Spam Filter {0}", emailAddress), "Inside Save<T> Method", "Email blocked by ET system"); } else { if (results.Length > 0 && results[0].StatusMessage != "OnGlobalUnsubList") { _logging.LogMessage(String.Format("On Global Unsub List {0}", emailAddress), "Inside Save<T> Method", "Email is on ET system Global Usubscribe List"); } } } } if (action.IsOneOf(SaveAction.AddOnly, SaveAction.UpdateAdd)) { if (results.Length == 1) { var result = results[0]; record.ID = result.NewID; } } return(results); }