public static MIMEModel SerializeMIME(String mime) { DataSerializer serializer = getSerializer(mime); var head = SerializeMIMEHead(mime); var model = new MIMEModel(); model.AddHead(head); var boundary = String.Concat("--", head[MIMEPrefix.Boundary]); serializeMIME(ref model, boundary, mime); return model; }
/// <summary> /// 最终封装model /// </summary> /// <param name="model"></param> /// <param name="mime"></param> private static void serializeMIME(ref MIMEModel model, String mime) { var contentType = DataSerializer.SerializeContentType(mime); if (String.IsNullOrEmpty(contentType.Boundary)) { var contentEncoding = DataSerializer.SerializeContentEncoding(mime); var data = DataSerializer.SerializeContext(mime); switch (contentType.MediaType) { case MediaTypeNames.Text.Plain: model.Add(MIMEPrefix.BodyText, MIMEncrypt.ConvertEncoding(contentType.CharSet, contentEncoding, data)); break; case MediaTypeNames.Text.Html: model.Add(MIMEPrefix.BodyHtml, MIMEncrypt.ConvertEncoding(contentType.CharSet, contentEncoding, data)); break; case MediaTypeNames.Application.Octet: case MediaTypeNames.Image.Gif: case MediaTypeNames.Image.Jpeg: model.AddAttachment(new Attachment { Name = contentType.Name, Data = MIMEncrypt.GetBytesByPattern(contentEncoding, data) }); break; default: break; } } else { var boundary = String.Concat("--", contentType.Boundary); serializeMIME(ref model, boundary, mime); } }
private static void serializeMIME(ref MIMEModel model, String boundary, String mime) { var partials = pickupPartial(boundary, mime); for (int i = 0; i < partials.Length; i++) { serializeMIME(ref model, partials[i]); } }