public static void Equal(string expected, string actual)
if (expected == actual) {
Console.WriteLine("True");
Console.WriteLine(string.Format("False - expected: {0}, actual: {1}", expected, actual));
public static void Equal(byte[] expected, byte[] actual)
Equal(BitConverter.ToString(expected).Replace("-", " "), BitConverter.ToString(actual).Replace("-", " "));
public static void Main()
TestEncodingCorrectText();
TestEncodingInvalidText();
TestEncodingUrlWithoutEmail();
TestByteArrayIsCorrect();
public static void TestEncodingCorrectText()
var urlFromBytes2 = new byte[]
0x3C, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x65, 0x6D, 0x63, 0x6C, 0x69,
0x65, 0x6E, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x75, 0x6E, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
0x65, 0x2E, 0x61, 0x73, 0x70, 0x78, 0x3F, 0x65, 0x6D, 0x61, 0x69, 0x6C, 0x3D,
0x74, 0x65, 0x73, 0x74, 0x40, 0x74, 0x65, 0x73, 0x74, 0x2E, 0x63, 0x6F, 0x6D,
0x26, 0x6E, 0x6F, 0x77, 0x3D, 0x74, 0x72, 0x75, 0x65, 0x3E
var text = Encoding.UTF8.GetString(urlFromBytes2);
var result = Rfc2047.EncodeText(Encoding.UTF8, text);
var resultAsText = Encoding.UTF8.GetString(result);
Assert.Equal("<https://www.emclient.com/unsubscribe.aspx?email=test@test.com&now=true>", resultAsText);
public static void TestEncodingInvalidText()
var urlFromBytes2 = new byte[]
0x3C, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x65, 0x6D, 0x63, 0x6C, 0x69,
0x65, 0x6E, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x75, 0x6E, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
0x65, 0x2E, 0x61, 0x73, 0x70, 0x78, 0x3F, 0x65, 0x6D, 0x61, 0x69, 0x6C, 0x3D,
0x6B, 0x6C, 0x69, 0x6E, 0x67, 0x65, 0x6E, 0x62, 0x65, 0x72, 0x67, 0x40, 0x65, 0x6D, 0x63,
0x6C, 0x69, 0x65, 0x6E, 0x74, 0x2E, 0x63, 0x6F, 0x6D,
0x26, 0x6E, 0x6F, 0x77, 0x3D, 0x74, 0x72, 0x75, 0x65, 0x3E
var text = Encoding.UTF8.GetString(urlFromBytes2);
var result = Rfc2047.EncodeText(Encoding.UTF8, text);
var resultAsText = Encoding.UTF8.GetString(result);
Assert.Equal("<https://www.emclient.com/unsubscribe.aspx?email=klingenberg@emclient.com&now=true>", resultAsText);
public static void TestEncodingJustEmail()
var urlFromBytes2 = new byte[]
0x6B, 0x6C, 0x69, 0x6E, 0x67, 0x65, 0x6E, 0x62, 0x65, 0x72, 0x67, 0x40, 0x65, 0x6D, 0x63,
0x6C, 0x69, 0x65, 0x6E, 0x74, 0x2E, 0x63, 0x6F, 0x6D,
var text = Encoding.UTF8.GetString(urlFromBytes2);
var result = Rfc2047.EncodeText(Encoding.UTF8, text);
var resultAsText = Encoding.UTF8.GetString(result);
Assert.Equal("klingenberg@emclient.com", resultAsText);
public static void TestEncodingUrlWithoutEmail()
var urlFromBytes2 = new byte[]
0x3C, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x65, 0x6D, 0x63, 0x6C, 0x69,
0x65, 0x6E, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x75, 0x6E, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
0x65, 0x2E, 0x61, 0x73, 0x70, 0x78, 0x3F, 0x65, 0x6D, 0x61, 0x69, 0x6C, 0x3D,
0x26, 0x6E, 0x6F, 0x77, 0x3D, 0x74, 0x72, 0x75, 0x65, 0x3E
var text = Encoding.UTF8.GetString(urlFromBytes2);
var result = Rfc2047.EncodeText(Encoding.UTF8, text);
var resultAsText = Encoding.UTF8.GetString(result);
Assert.Equal("<https://www.emclient.com/unsubscribe.aspx?email=&now=true>", resultAsText);
public static void TestByteArrayIsCorrect()
Console.WriteLine("Checking string is correcly converted to bytes");
var originalText = "<https://www.emclient.com/unsubscribe.aspx?email=klingenberg@emclient.com&now=true>";
var originalUtfBytes = Encoding.UTF8.GetBytes(originalText);
var originalAsciiBytes = Encoding.ASCII.GetBytes(originalText);
Assert.Equal(originalUtfBytes, originalAsciiBytes);
var urlFromBytes2 = new byte[]
0x3C, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x65, 0x6D, 0x63, 0x6C, 0x69,
0x65, 0x6E, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x75, 0x6E, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
0x65, 0x2E, 0x61, 0x73, 0x70, 0x78, 0x3F, 0x65, 0x6D, 0x61, 0x69, 0x6C, 0x3D,
0x6B, 0x6C, 0x69, 0x6E, 0x67, 0x65, 0x6E, 0x62, 0x65, 0x72, 0x67, 0x40, 0x65, 0x6D, 0x63,
0x6C, 0x69, 0x65, 0x6E, 0x74, 0x2E, 0x63, 0x6F, 0x6D,
0x26, 0x6E, 0x6F, 0x77, 0x3D, 0x74, 0x72, 0x75, 0x65, 0x3E
var text = Encoding.UTF8.GetString(urlFromBytes2);
Assert.Equal(originalText, text);
Assert.Equal(originalUtfBytes, urlFromBytes2);