我需要在MailChimp.com
中立即制作并发送广告系列。我为此目的使用了 C# wrapper Percepective MCAPI.dll
。
,很明显我们无法列出但可以创建广告系列。我尝试了代码但campaignID is retured null
;没有异常抛出至少。我确实设置了campaigntype to Auto
。
这是我的代码段:
try { string apiKey = "api-us2"; // API KEY is valid string emailAddress = "ravinderpal.singh@abc.net"; 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 = "anil.k@abc.net"; 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 }
任何人都可以向我展示正确的方向以及代码的错误。
任何帮助都会非常感激。
感谢。
答案 0 :(得分:2)
我解决了这个问题,这里是代码作为解决方案。这里listID是Mailchimp中帐户中预先创建的列表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 = "abc@xyz.com";
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);
}
}
}
答案 1 :(得分:1)
我从内容中删除了网址和存档。然后创建了广告系列:
// campaign Create
campaignCreateOptions campaignCreateOpt = new campaignCreateOptions();
campaignCreateOpt.list_id = listId;
campaignCreateOpt.subject = " New Campaign from Someemone";
campaignCreateOpt.from_email = "someone@home.com";
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