Monday, March 3, 2014

MailChimp Generic Unsubscribe From List Link

When you send an email from MailChimp they will customize each email with an unsubscribe link specific to the "To" email address.  However, you can also provide a generic unsubscribe link if you'd like to include that on your website or other communication.

The generic link can be found after selecting a list, choose the "Signup Forms" tab, then choose "Unsubscribe Form" from the drop down list.  The link is available in the "Unsubscribe from URL" textbox.



More information here:

http://kb.mailchimp.com/article/where-can-i-find-the-unsubscribe-link-for-my-list/




Hope this helps,
Aaron


Monday, November 25, 2013

Pretty Print Array of Arrays in .NET C#

I had a need to pretty-print an array of arrays while parsing some JSON recently.  This was a throw-away code project; I just needed some code I could copy and paste quick to get the job done.  I couldn't find anything I liked, so I thought I'd post what I ended up with here to save others some time.






Example Output:

[[2,3]]

[[2,3][5,4,3]]

[[2,3][5,4,3][8,9]]




Tuesday, September 10, 2013

Flatten HTML Document to List of Tags, Attributes, and Values

I had a need to flatten a set of HTML documents to a list of the HTML tags in their head sections.  I thought this bit of code might be useful for someone in the future.

This uses the CsQuery library which is a port of jQuery in C#: https://github.com/jamietre/CsQuery
CsQuery also has a NuGet Package: https://www.nuget.org/packages/CsQuery


//Note: Get HTML from somewhere...
var html = "";

var cq = CsQuery.CQ.Create(html);

var head = cq["head"];

var nonScriptHeadTagsQuery =
from t in head.Children()
where
t.NodeName != "SCRIPT"
&& t.NodeName != "LINK"
select new { Tag = t, TagId = Guid.NewGuid() };

var nonScriptHeadTags = nonScriptHeadTagsQuery.ToList();

var htmlTags =
nonScriptHeadTags
.SelectMany(tagInfo => tagInfo.Tag.Attributes, (tagInfo, attribute) => new { TagInfo = tagInfo, Attribute = attribute })
.Select(x => new
{
TagId = x.TagInfo.TagId,
TagType = x.TagInfo.Tag.NodeName,
AttributeName = x.Attribute.Key,
AttributeValue = x.Attribute.Value,
})
.ToList();


Hope this helps,
Aaron