public void should_handle_parts_with_no_charset_and_empty_binary_content_when_forcing_base64() { var mimePart = new MimePart(new byte[0], _textContentFileName) { TextContent = null }; Assert.DoesNotThrow(() => mimePart.ToMimeString(true)); }
public void should_serialize_single_part_message_to_mime_string() { var textFileContent = File.ReadAllText(_textfilePath); var mimePart = new MimePart(_textfilePath, false); var mimeString = mimePart.ToMimeString(); mimeString.ShouldMatch("Content-Type: text/plain;\r\n"); mimeString.ShouldMatch(@"\r\n" + textFileContent + "$"); }
public void should_serialize_to_mime_string_mutipart_message_with_nested_parts() { var mimePart = new MimePart { ContentType = { MimeType = "multipart/mixed", Parameters = { { "boundary", "OuterBoundary"} } }, SubParts = new MimePartCollection { new MimePart { ContentType = { MimeType = "multipart/mixed", Parameters = { { "boundary", "InnerBoundary"} } }, SubParts = new MimePartCollection { new MimePart(_textfilePath, true), new MimePart(_imagefilePath, false) } }, new MimePart(_imagefilePath, false) } }; var outerSubParts = mimePart.ToMimeString().SplitMimeParts("--OuterBoundary\r\n"); outerSubParts.Length.ShouldEqual(3); var mixedPart = outerSubParts[1]; mixedPart.ShouldMatch("^Content-Type: multipart/mixed;"); mixedPart.ShouldMatch(@" boundary=""InnerBoundary""\r\n"); var imagePart = outerSubParts[2]; imagePart.ShouldMatch("^Content-Type: image/gif"); imagePart.ShouldMatch("--OuterBoundary--\r\n$"); var innerSubParts = mixedPart.SplitMimeParts("--InnerBoundary\r\n"); innerSubParts.Length.ShouldEqual(3); var innerTextPart = innerSubParts[1]; innerTextPart.ShouldMatch("^Content-Type: text/plain;\r\n"); innerTextPart.ShouldMatch("Hello, World !\r\n\r\n$"); var innerImagePart = innerSubParts[2]; innerImagePart.ShouldMatch("^Content-Type: image/gif"); innerImagePart.ShouldMatch("--InnerBoundary--\r\n\r\n\r\n$"); }