.NET Library



This is a client for the REST API.

Installation

The client is available on GitHub and can also be installed as a dependency using Nuget. <!--To use Nuget for .<span class="il">NET </span>Framework projects, add the following lines to <tt>packages.config</tt>: <pre><code class="lang-net"><package id="Newtonsoft.Json" version="4.5.1" targetFramework="net40" /> <package id="Sailthru.Client" version="1.1.4" targetFramework="net40" /> .NET Core projects are not supported at this time.-->

Authentication

You can find your API key and secret here when logged in to the platform.
string apiKey = "***************";
string secret = "***************";
SailthruClient client = new SailthruClient(apiKey, secret);
SailthruResponse response;

Examples

Send

//Send
SailthruResponse response;
response = client.Send("default2", "abc@sailthru.com");

//recommended to check response from server
if (response.IsOK())
{
    //do something
}
else
{
    String errorrResponse = response.RawResponse;
}
Multi Send
//multi send
String[] emails = {"abc@sailthru.com", "xyz@gmail.com"};
response = client.Multisend("default", emails)
Send Cancel
//send cancel
//response = client.CancelSend("TTimJmdj2apLAAPM");
Get Send
//get send
String sendId = "TTizbmdj2YheAAUu";
response = client.GetSend(sendId);

Template

Get Template
String templateId = "default2";
response = client.GetTemplate(templatedId);
Save Template
TemplateRequest templateRequest = new TemplateRequest();
templateRequest.FromEmail = "praj@sailthru.com";
templateRequest.FromName = "Sailthru";
templateRequest.GoogleAnalytics = TemplateRequest.GoogleAnalyticsType.Disabled;
templateRequest.Template = "default2555";

response = client.SaveTemplate(templateRequest);

Blast

Set Blast
BlastRequest blastRequest = new BlastRequest();
blastRequest.Name = "Blast Name1";
blastRequest.ContentHtml = "<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. </p>";
blastRequest.List = "Sample List";
blastRequest.ContentText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, ";
blastRequest.Subject = "Sample Subject";
blastRequest.ScheduleTime = "+3 hours";
blastRequest.FromName = "C# Client";
blastRequest.FromEmail = "no-reply@sailthru.com";

response = client.ScheduleBlast(blastRequest);
Get Blast
String blastId = "252525";
response = client.GetBlast(blastId);

Stats

Get Stat
response = client.GetStat("list");

User

Set Horizon Cookie on User at Login
UserRequest request = new UserRequest();
request.Id = "joe@example.com";
Hashtable fieldsHashtable = new Hashtable();
fieldsHashtable.Add("keys", 1);
request.Fields = fieldsHashtable;
request.Login = "site";
SailthruResponse response = client.SetUser(request);
if (response.HashtableResponse.ContainsKey ("keys"))
{
  Hashtable keys = (Hashtable)response.HashtableResponse["keys"];
  var cookie = keys["cookie"];
  // Handle cookie
}

Job

Import from CSV file
client.ProcessImportJob("my_list", "/tmp/my_users.csv");
Import from List
List<String> emails = new List<String>() {"example@example.com", "hello@world.com"};
client.ProcessImportJob("my_list", emails);
Export List Data to File Select a subset of fields by specifying "fields" in a parameter hashtable. This example selects only the clicks field.
Hashtable exportParams = new Hashtable(); 
Hashtable fields = new Hashtable();
exportParams.Add("job", "export_list_data"); 
exportParams.Add("list", listName);
fields.Add("clicks", 1);
exportParams.Add("fields", fields);

Purchase

Pass shopping cart purchase data
string apiKey = "***";
string secret = "***";
SailthruClient client = new SailthruClient(apiKey, secret);
SailthruResponse response;
PurchaseRequest request = new PurchaseRequest();

request.Email = "support@sailthru.com";
ArrayList items = new ArrayList();
Hashtable firstitem = new Hashtable();
request.MessageID = "23423.231";
request.Incomplete = 1;
request.ReminderTemplate = "abandonedcarttemplate";
request.ReminderTime = "+3 hours";
int firstitemqty = 1;
String firstitemid = "abc";
String firstitemtitle = "This new product";
int firstitemprice = 1099;
String firstitemurl = "http://www.example.com/thisnewproduct.html";
firstitem.Add("qty", firstitemqty);
firstitem.Add("id", firstitemid);
firstitem.Add("title", firstitemtitle);
firstitem.Add("price", firstitemprice);
firstitem.Add("url", firstitemurl);
items.Add(firstitem);
request.Items = items;

response = client.Purchase(request);
Console.Write(response.RawResponse);

Rate Limits

Hashtable lastRateLimitInfo = sailthruClient.getLastRateLimitInfo("user", "post");

// getLastRateLimitInfo returns null if given endpoint/method wasn't triggered previously
if (lastRateLimitInfo != null) {
    int limit = lastRateLimitInfo['limit'];
    int remaining = lastRateLimitInfo['remaining'];
    DateTime reset = (DateTime)lastRateLimitInfo['reset'];

    // throttle api calls based on last rate limit info
    if (remaining <= 0) {
        TimeSpan time_span_till_reset = reset.Subtract(DateTime.now());
        // sleep or perform other business logic before next user api call
        Thread.Sleep(time_span_till_reset); 
    }
}

Custom Event

EventRequest request = new EventRequest();
request.Id = "abc@sailthru.com";
request.Event = "dotnet";
response = client.PostEvent(request);

Contact us

Top