public void BinaryMultiPartChilkatMime() { Core.Mime.Mime mime = new Core.Mime.Mime(binaryChilkatMimePath); AssertionHelper.IsTrue("There are 2 header fields", mime.Headers.Count == 2); AssertionHelper.IsTrue("There are 3 parameter in the second header field", mime.Headers[1].Parameters.Count == 3); AssertionHelper.IsTrue("The content type is multipart/related", mime.GetHeaderField("content-type").CompareTo("multipart/related") == 0); AssertionHelper.IsTrue("There are 4 parts", mime.NumParts == 4); AssertionHelper.IsTrue("the main mime contains content-type header.", mime.Headers.Contains("content-type")); AssertionHelper.IsTrue("Content-type header contains type parameter", mime.Headers["content-type"].Parameters.Contains("type")); AssertionHelper.IsTrue("Content-type header contains charset parameter", mime.Headers["content-type"].Parameters.Contains("charset")); if (mime.HasParts) { var p1 = mime.GetPart(0); AssertionHelper.IsTrue("The first body part contains content-type header with the same value as the parameter 'type' of the main mime.", p1.Headers.Contains("content-type") && mime.Headers["content-type"].Parameters["type"].Value.ToLower().Equals(p1.Headers["content-type"].Value.ToLower())); } //Change the content-transfer-encoding from base64 to binary for (int i = 0; i < mime.NumParts; i++) { if (mime.GetPart(i).Headers.Contains("content-transfer-encoding")) { mime.GetPart(i).EncodingType = Core.Mime.Mime.MimeEncoding.Binary; } } mime.Write(File.Open(Path.Combine(Path.GetTempPath(), "TestBinaryChilkatMime.mim"), FileMode.Create, FileAccess.Write, FileShare.None)); Core.Mime.Mime outputMime = new Core.Mime.Mime(Path.Combine(Path.GetTempPath(), "TestBinaryChilkatMime.mim")); try { AssertionHelper.IsTrue("There are 3 parameter in the second header field", outputMime.Headers[1].Parameters.Count == 3); AssertionHelper.IsTrue("The content type is multipart/related", outputMime.GetHeaderField("content-type").CompareTo("multipart/related") == 0); AssertionHelper.IsTrue("There are 4 parts", outputMime.NumParts == 4); string dir = Path.Combine(Path.GetTempPath(), "FluentJdfBinary"); for (int i = 0; i < outputMime.NumParts; i++) { SaveToFile(dir, outputMime.GetPart(i), false); } } finally { mime.Dispose(); } }
public void NestedMultiPartMime() { Core.Mime.Mime mm = new Core.Mime.Mime(mimeNestedMultipartTextPath); AssertionHelper.IsTrue("There are 3 header fields", mm.Headers.Count == 3); AssertionHelper.IsTrue("There are 3 parameter in the secound header field", mm.Headers[1].Parameters.Count == 3); AssertionHelper.IsTrue("The content type is multipart/related", mm.GetHeaderField("content-type").CompareTo("multipart/related") == 0); AssertionHelper.IsTrue("There are 2 parts", mm.NumParts == 2); //First part var mm1 = mm.GetPart(0); AssertionHelper.IsTrue("There are 2 header fields in the first part", mm1.Headers.Count == 2); AssertionHelper.IsTrue("There are 1 parameter in the first header field in the first part", mm1.Headers[0].Parameters.Count == 1); AssertionHelper.IsTrue("There are 3 parts in the first part", mm1.NumParts == 3); var mm11 = mm1.GetPart(0); AssertionHelper.IsTrue("There are 1 header field and 1 parameter in the first message of the first part.", mm11.Headers.Count == 1 && mm11.Headers[0].Parameters.Count == 1); var mm12 = mm1.GetPart(1); AssertionHelper.IsTrue("There are 1 header field and 1 parameter in the second message of the first part.", mm12.Headers.Count == 1 && mm12.Headers[0].Parameters.Count == 1); var mm13 = mm1.GetPart(2); AssertionHelper.IsTrue("There are 4 header fields in the third message of the first part.", mm13.Headers.Count == 4); //Second part var mm2 = mm.GetPart(1); AssertionHelper.IsTrue("There are 2 header fields in the second part", mm2.Headers.Count == 2); AssertionHelper.IsTrue("There are 1 parameter in the first header field in the second part", mm2.Headers[0].Parameters.Count == 1); AssertionHelper.IsTrue("There are 3 parts in the second part", mm2.NumParts == 3); var mm21 = mm2.GetPart(0); AssertionHelper.IsTrue("There are 1 header field and 1 parameter in the first message of the second part.", mm21.Headers.Count == 1 && mm21.Headers[0].Parameters.Count == 1); var mm22 = mm2.GetPart(1); AssertionHelper.IsTrue("There are 1 header field and 1 parameter in the second message of the second part.", mm22.Headers.Count == 1 && mm22.Headers[0].Parameters.Count == 1); var mm23 = mm2.GetPart(2); AssertionHelper.IsTrue("There are 4 header fields in the third message of the second part.", mm23.Headers.Count == 4); //Write to file mm.Write(File.Open(Path.Combine(Path.GetTempPath(), "TestNestedMultiPartMimeMessage.txt"), FileMode.Create, FileAccess.Write, FileShare.None)); }