2011-06-17 85 views
5

我需要立即創建併發送MailChimp.com中的廣告系列。爲此我使用了C# wrapper Percepective MCAPI.dll如何使用ASP.Net在MailChimp中創建廣告系列

MailChimp API,它清楚,我們不能列出,但可以創建活動。我試過代碼,但campaignID is retured null;至少不會拋出異常。我確實設置了campaigntype to Auto

這裏是我的代碼片段:

 
try 
{ 
    string apiKey = "api-us2"; // API KEY is valid 
    string emailAddress = "[email protected]"; 
    listsForEmailInput lstForEmailInput = new listsForEmailInput(apiKey, emailAddress); 
    listsForEmail cmd = new listsForEmail(lstForEmailInput); 
    listsForEmailOutput lstEmailOutPut = cmd.Execute(); 

    List lstResults = lstEmailOutPut.result; 
    string listID = lstResults[0]; // Got Precraeted List ID(Valid Confirmed) 

    Console.WriteLine("\n" + listID);     


    // compaign Create 
    campaignCreateOptions campaignCreateOpt = new campaignCreateOptions(); 
    campaignCreateOpt.list_id = listID; 
    campaignCreateOpt.subject = " New Campaign from dev_Anil"; 
    campaignCreateOpt.from_email = "[email protected]"; 
    campaignCreateOpt.from_name = "anil"; 

    Dictionary content = new Dictionary(); 
    content.Add("html", "Helloaasdsa"); 
    content.Add("text", "Hi all !! this is dev_anil"); 
    content.Add("url", ""); 
    content.Add("archive", ""); 

    campaignSegmentOptions csOptions = new campaignSegmentOptions(); 
    csOptions.match = "any"; // Could not set Condition -- need help for this 

    // Need to set a Dictionary typeOptions because null is not supported 
    Dictionary typeOptions = new Dictionary(); 

    campaignCreateParms campaignCreateParms = new campaignCreateParms(apiKey, EnumValues.campaign_type.auto, campaignCreateOpt, content, csOptions, typeOptions); 
    campaignCreateInput campaignCreateInput = new campaignCreateInput(campaignCreateParms); 
    campaignCreate campaignCreate = new campaignCreate(campaignCreateInput); 
    campaignCreateOutput ccOutput = campaignCreate.Execute(campaignCreateInput); 
    string abc = ccOutput.result; // This comes out to null 

} 
catch(Exception ee) 
{ 
    Console.WriteLine("\n\n Exception :" + ee.Message); // no exception 
} 

有誰能夠告訴我正確的方向,什麼是錯的代碼。

任何幫助將不勝感激。

謝謝。

回答

2

我解決了這個問題,這裏是代碼解決方案。這裏listID在Mailchimp的帳戶中預先創建了List ID。

 
private void CreateCampaignAndSend(string apiKey, string listID) 
{ 
      Int32 TemplateID = 100; 
      string campaignID =string.Empty;

// compaign Create Options campaignCreateOptions campaignCreateOpt = new campaignCreateOptions(); campaignCreateOpt.list_id = listID; campaignCreateOpt.subject = "subject"; campaignCreateOpt.from_email = "[email protected]"; campaignCreateOpt.from_name = "abc"; campaignCreateOpt.template_id = TemplateID; // Content Dictionary<string, string> content = new Dictionary<string, string>(); content.Add("html_ArticleTitle1", "ArticleTitle1"); content.Add("html_ArticleTitle2","ArticleTitle2"); content.Add("html_ArticleTitle3", "ArticleTitle3"); content.Add("html_Article1", "Article1"); content.Add("html_Article2", "Article2"); // Conditions List<campaignSegmentCondition> csCondition = new List<campaignSegmentCondition>(); campaignSegmentCondition csC = new campaignSegmentCondition(); csC.field = "interests-" + 123; // where 123 is the Grouping Id from listInterestGroupings() csC.op = "all"; csC.value = ""; csCondition.Add(csC); // Options campaignSegmentOptions csOptions = new campaignSegmentOptions(); csOptions.match = "all"; // Type Options Dictionary<string, string> typeOptions = new Dictionary<string, string>(); typeOptions.Add("offset-units", "days"); typeOptions.Add("offset-time", "0"); typeOptions.Add("offset-dir", "after"); // Create Campaigns campaignCreate campaignCreate = new campaignCreate(new campaignCreateInput(apiKey, EnumValues.campaign_type.plaintext, campaignCreateOpt, content, csOptions, typeOptions)); campaignCreateOutput ccOutput = campaignCreate.Execute(); List<Api_Error> error = ccOutput.api_ErrorMessages; // Catching API Errors if (error.Count <= 0) { campaignID = ccOutput.result; } else { foreach (Api_Error ae in error) { Console.WriteLine("\n ERROR Creating Campaign : ERRORCODE\t:" + ae.code + "\t ERROR\t:" + ae.error); } } }
上自由accound我得到
+0

:L錯誤506:自動回覆僅在每月可用的和付費爲你去賬戶。 – Edd 2012-07-12 13:11:43

1

我從內容中刪除了url和存檔。然後該活動創建得很好:

 // campaign Create 
     campaignCreateOptions campaignCreateOpt = new campaignCreateOptions(); 
     campaignCreateOpt.list_id = listId; 
     campaignCreateOpt.subject = " New Campaign from Someemone"; 
     campaignCreateOpt.from_email = "[email protected]"; 
     campaignCreateOpt.from_name = "someone"; 


     Dictionary<string, string> content = new Dictionary<string, string>(); 
     content.Add("html", "Lots of cool stuff here."); 


     campaignSegmentOptions csOptions = new campaignSegmentOptions(); 
     csOptions.match = "any"; // Could not set Condition -- need help for this 

     // Need to set a Dictionary typeOptions because null is not supported 
     Dictionary<string,string> typeOptions = new Dictionary<string, string>(); 

     campaignCreateParms campaignCreateParms = new campaignCreateParms(apiKey, EnumValues.campaign_type.trans, campaignCreateOpt, content, csOptions, typeOptions); 
     campaignCreateInput campaignCreateInput = new campaignCreateInput(campaignCreateParms); 
     campaignCreate campaignCreate = new campaignCreate(campaignCreateInput); 
     campaignCreateOutput ccOutput = campaignCreate.Execute(campaignCreateInput); 
     string newCampaignId = ccOutput.result; // Not null anymore 
相關問題