Skip to content

Commit 39fe77d

Browse files
Merge pull request pmengal#18 from reinaldocoelho/master
Add test to email with 8bit transfer encode. Change default text encode from ASCII to UTF8.
2 parents e17a830 + 2f88f43 commit 39fe77d

7 files changed

Lines changed: 729 additions & 14 deletions

File tree

ActiveUp.Net-vs2017.sln

Lines changed: 636 additions & 0 deletions
Large diffs are not rendered by default.

Class Library/ActiveUp.Net.Common/Parser.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ private static int GetASCIIByteCountOfPart(string part)
138138
private static void ParseSubParts(ref MimePart part, Message message)
139139
{
140140
string boundary = part.ContentType.Parameters["boundary"];
141-
string parentPartAsciiBody = ToASCII(part.BinaryContent);
141+
string parentPartAsciiBody = ToUtf8(part.BinaryContent);
142142
byte[] parentPartBinary = part.BinaryContent;
143143

144144
Logger.AddEntry(typeof(Parser), "boundary : " + boundary);
@@ -171,7 +171,7 @@ private static void ParseSubParts(ref MimePart part, Message message)
171171
GC.WaitForPendingFinalizers();
172172

173173
parentPartBinary = tmp;
174-
parentPartAsciiBody = ToASCII(parentPartBinary);
174+
parentPartAsciiBody = ToUtf8(parentPartBinary);
175175
tmp = null;
176176

177177
if (!strpart.StartsWith("--") && !string.IsNullOrEmpty(strpart))
@@ -316,7 +316,7 @@ private static void DecodePartBody(ref MimePart part)
316316
}
317317
else if (part.ContentTransferEncoding.Equals(ContentTransferEncoding.QuotedPrintable))
318318
{
319-
part.TextContent = Codec.FromQuotedPrintable(ToASCII(part.BinaryContent), charset);
319+
part.TextContent = Codec.FromQuotedPrintable(ToUtf8(part.BinaryContent), charset);
320320
part.BinaryContent = Codec.GetEncoding(charset).GetBytes(part.TextContent);
321321
}
322322
else
@@ -332,7 +332,7 @@ private static void DecodePartBody(ref MimePart part)
332332

333333
private static void DecodeBase64Part(MimePart part, string charset)
334334
{
335-
string text = ToASCII(part.BinaryContent);
335+
string text = ToUtf8(part.BinaryContent);
336336
byte[] binary = null;
337337
#if !PocketPC
338338
try
@@ -347,7 +347,7 @@ private static void DecodeBase64Part(MimePart part, string charset)
347347
binary = Convert.FromBase64String(text);
348348
}
349349
#endif
350-
text = ToASCII(binary);
350+
text = ToUtf8(binary);
351351
if (part.ContentDisposition != ContentDisposition.Attachment)
352352
text = Codec.GetEncoding(charset).GetString(binary, 0, binary.Length);
353353

@@ -461,10 +461,10 @@ public static string Unfold(string input)
461461
/// </summary>
462462
public static event OnBodyParsedEvent BodyParsed;
463463

464-
private static string ToASCII(byte[] data)
464+
private static string ToUtf8(byte[] data)
465465
{
466466
const int BUFFER_SIZE = 2048;
467-
StringBuilder sb = new StringBuilder();
467+
var sb = new StringBuilder();
468468
for (int i = 0; i < data.Length; i += BUFFER_SIZE)
469469
sb.Append(ConvertByteBlock(data, i, Math.Min(BUFFER_SIZE, data.Length - i)));
470470

@@ -473,7 +473,7 @@ private static string ToASCII(byte[] data)
473473

474474
private static string ConvertByteBlock(byte[] data, int start, int length)
475475
{
476-
return Encoding.ASCII.GetString(data, start, length);
476+
return Encoding.UTF8.GetString(data, start, length);
477477
}
478478

479479
private static void ParseHeaderFields(MimePart part, int headerEnd)
@@ -511,7 +511,7 @@ public static MimePart ParseMimePart(byte[] binaryData, Message message)
511511
{
512512
MimePart part = new MimePart();
513513
part.ParentMessage = message;
514-
part.OriginalContent = ToASCII(binaryData); //ASCII content for header parsing
514+
part.OriginalContent = ToUtf8(binaryData); //ASCII content for header parsing
515515

516516
try
517517
{

Class Library/ActiveUp.Net.Tests/ActiveUp.Net.Tests.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,9 @@
105105
<None Include="resource\confirm_read_parse_problem.eml">
106106
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
107107
</None>
108+
<None Include="resource\content-transfer-encode-8bit.eml">
109+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
110+
</None>
108111
<None Include="resource\image-as-body-part.eml">
109112
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
110113
</None>

Class Library/ActiveUp.Net.Tests/Common/MimePartTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ public void should_content_transfer_encode_text()
419419
public void should_append_html_parts_with_multipart_related_content_type()
420420
{
421421
var message = Parser.ParseMessageFromFile(_baseDir + "\\resource\\html_multipart_related_email_with_subparts.eml");
422-
message.BodyText.Text.ShouldEqual("Hi,\r\n\r\nI?m the first step of message to test.\r\n\r\nSender\r\nHelper\r\n[Descrição: Descrição: Descrição: Descrição: Imagem4]\r\nE-mail: [email protected]\r\nWeb: www.sender.com<http://www.sender.com/>\r\n\r\nCurta nossa página no Facebook<https://www.sender.com>\r\n\r\n\r\n\r\n\r\nDe: Destinatary - Client\r\nEnviada em: quarta-feira, 23 de março de 2016 18:39\r\nPara: Odare; [email protected]; suporte\r\nCc: contasapagar; Customer2 - Client; Customer3 - Client; Customer4 - Client\r\nAssunto: Email multipart related multilevel\r\n\r\nHi there,\r\n\r\nThis is the multipart original message.\r\n\r\n[cid:[email protected]]\r\n\r\n\r\nFollow the image of problem:\r\n\r\n[cid:[email protected]]\r\n\r\nAtt,\r\n\r\n\r\n\r\n\r\n\r\n");
422+
message.BodyText.Text.ShouldEqual("Hi,\r\n\r\nI'm the first step of message to test.\r\n\r\nSender\r\nHelper\r\n[Descrição: Descrição: Descrição: Descrição: Imagem4]\r\nE-mail: [email protected]\r\nWeb: www.sender.com<http://www.sender.com/>\r\n\r\nCurta nossa página no Facebook<https://www.sender.com>\r\n\r\n\r\n\r\n\r\nDe: Destinatary - Client\r\nEnviada em: quarta-feira, 23 de março de 2016 18:39\r\nPara: Odare; [email protected]; suporte\r\nCc: contasapagar; Customer2 - Client; Customer3 - Client; Customer4 - Client\r\nAssunto: Email multipart related multilevel\r\n\r\nHi there,\r\n\r\nThis is the multipart original message.\r\n\r\n[cid:[email protected]]\r\n\r\n\r\nFollow the image of problem:\r\n\r\n[cid:[email protected]]\r\n\r\nAtt,\r\n\r\n\r\n\r\n\r\n\r\n");
423423
message.BodyHtml.Text.ShouldEqual("<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\r\n<meta name=\"Generator\" content=\"Microsoft Word 14 (filtered medium)\">\r\n<!--[if !mso]><style>v\\:* {behavior:url(#default#VML);}\r\no\\:* {behavior:url(#default#VML);}\r\nw\\:* {behavior:url(#default#VML);}\r\n..sape {behavior:url(#default#VML);}\r\n</style><![endif]--><style><!--\r\n/* Font Definitions */\r\n@font-face\r\n {font-family:Calibri;\r\n panose-1:2 15 5 2 2 2 4 3 2 4;}\r\n@font-face\r\n {font-family:Tahoma;\r\n panose-1:2 11 6 4 3 5 4 4 2 4;}\r\n@font-face\r\n {font-family:Verdana;\r\n panose-1:2 11 6 4 3 5 4 4 2 4;}\r\n@font-face\r\n {font-family:\"Century Gothic\";\r\n panose-1:2 11 5 2 2 2 2 2 2 4;}\r\n/* Style Definitions */\r\np.MsoNormal, li.MsoNormal, div.MsoNormal\r\n {margin:0cm;\r\n margin-bottom:.0001pt;\r\n font-size:11.0pt;\r\n font-family:\"Calibri\",\"sans-serif\";\r\n mso-fareast-language:EN-US;}\r\na:link, span.MsoHyperlink\r\n {mso-style-priority:99;\r\n color:blue;\r\n text-decoration:underline;}\r\na:visited, span.MsoHyperlinkFollowed\r\n {mso-style-priority:99;\r\n color:purple;\r\n text-decoration:underline;}\r\np.MsoAcetate, li.MsoAcetate, div.MsoAcetate\r\n {mso-style-priority:99;\r\n mso-style-link:\"Texto de balão Char\";\r\n margin:0cm;\r\n margin-bottom:.0001pt;\r\n font-size:8.0pt;\r\n font-family:\"Tahoma\",\"sans-serif\";\r\n mso-fareast-language:EN-US;}\r\nspan.TextodebaloChar\r\n {mso-style-name:\"Texto de balão Char\";\r\n mso-style-priority:99;\r\n mso-style-link:\"Texto de balão\";\r\n font-family:\"Tahoma\",\"sans-serif\";}\r\nspan.EstiloDeEmail19\r\n {mso-style-type:personal;\r\n font-family:\"Calibri\",\"sans-serif\";\r\n color:windowtext;}\r\nspan.EstiloDeEmail20\r\n {mso-style-type:personal-reply;\r\n font-family:\"Calibri\",\"sans-serif\";\r\n color:#365F91;}\r\n..MoChpDefault\r\n {mso-style-type:export-only;\r\n font-size:10.0pt;}\r\n@page WordSection1\r\n {size:612.0pt 792.0pt;\r\n margin:70.85pt 3.0cm 70.85pt 3.0cm;}\r\ndiv.WordSection1\r\n {page:WordSection1;}\r\n--></style><!--[if gte mso 9]><xml>\r\n<o:shapedefaults v:ext=\"edit\" spidmax=\"1026\" />\r\n</xml><![endif]--><!--[if gte mso 9]><xml>\r\n<o:shapelayout v:ext=\"edit\">\r\n<o:idmap v:ext=\"edit\" data=\"1\" />\r\n</o:shapelayout></xml><![endif]-->\r\n</head>\r\n<body lang=\"PT-BR\" link=\"blue\" vlink=\"purple\">\r\n<div class=\"WordSection1\">\r\n<p class=\"MsoNormal\"><span style=\"color:#365F91\">Hi,<o:p></o:p></span></p>\r\n<p class=\"MsoNormal\"><span style=\"color:#365F91\"><o:p>&nbsp;</o:p></span></p>\r\n<p class=\"MsoNormal\"><span style=\"color:#365F91\">This is the multipart original message.<o:p></o:p></span></p>\r\n<p class=\"MsoNormal\"><b><span style=\"font-family:&quot;Century Gothic&quot;,&quot;sans-serif&quot;;color:#002060;mso-fareast-language:PT-BR\"><o:p>&nbsp;</o:p></span></b></p>\r\n<p class=\"MsoNormal\"><b><span style=\"font-family:&quot;Century Gothic&quot;,&quot;sans-serif&quot;;color:#002060;mso-fareast-language:PT-BR\">Sender<o:p></o:p></span></b></p>\r\n<table class=\"MsoNormalTable\" border=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td style=\"padding:.75pt .75pt .75pt .75pt\">\r\n<p class=\"MsoNormal\"><i><span style=\"font-size:10.0pt;font-family:&quot;Century Gothic&quot;,&quot;sans-serif&quot;;color:#002060;mso-fareast-language:PT-BR\">Helper </span></i><i><span style=\"font-size:10.0pt;font-family:&quot;Century Gothic&quot;,&quot;sans-serif&quot;;color:#002060;mso-fareast-language:PT-BR\"><o:p></o:p></span></i></p>\r\n<p class=\"MsoNormal\"><span style=\"color:#1F497D;mso-fareast-language:PT-BR\"><img width=\"175\" height=\"104\" id=\"Imagem_x0020_1\" src=\"cid:[email protected]\" alt=\"Descrição: Descrição: Descrição: Descrição: Imagem4\"></span><span style=\"font-size:12.0pt;color:#1F497D;mso-fareast-language:PT-BR\"><o:p></o:p></span></p>\r\n</td>");
424424
}
425425

0 commit comments

Comments
 (0)