diff --git a/SerializableMailMessage/SerializableAttachment.cs b/SerializableMailMessage/SerializableAttachment.cs index d8ac2bb..72608d5 100644 --- a/SerializableMailMessage/SerializableAttachment.cs +++ b/SerializableMailMessage/SerializableAttachment.cs @@ -11,23 +11,13 @@ public static implicit operator Attachment(SerializableAttachment attachment) { if (attachment == null) return null; Attachment a = new Attachment(attachment.ContentStream, attachment.Name); - - a.ContentStream.Position = 0; - a.ContentDisposition.CreationDate = attachment.ContentDisposition.CreationDate; - a.ContentDisposition.DispositionType = attachment.ContentDisposition.DispositionType; - a.ContentDisposition.FileName = attachment.ContentDisposition.FileName; - a.ContentDisposition.Inline = attachment.ContentDisposition.Inline; - a.ContentDisposition.ModificationDate = attachment.ContentDisposition.ModificationDate; - a.ContentDisposition.ReadDate = attachment.ContentDisposition.ReadDate; - a.ContentDisposition.Size = attachment.ContentDisposition.Size; - foreach (string k in attachment.ContentDisposition.Parameters.Keys) - a.ContentDisposition.Parameters.Add(k, attachment.ContentDisposition.Parameters[k]); - + a.ContentStream.Position = 0; a.NameEncoding = attachment.NameEncoding; a.Name = attachment.Name; a.ContentId = attachment.ContentId; a.ContentType = attachment.ContentType; a.TransferEncoding = attachment.TransferEncoding; + attachment.ContentDisposition.CopyTo(a.ContentDisposition); return a; } diff --git a/SerializableMailMessage/SerializableContentDisposition.cs b/SerializableMailMessage/SerializableContentDisposition.cs index d64678b..34d695c 100644 --- a/SerializableMailMessage/SerializableContentDisposition.cs +++ b/SerializableMailMessage/SerializableContentDisposition.cs @@ -9,16 +9,7 @@ public static implicit operator ContentDisposition(SerializableContentDispositio if (disposition == null) return null; ContentDisposition d = new ContentDisposition(); - - d.CreationDate = disposition.CreationDate; - d.DispositionType = disposition.DispositionType; - d.FileName = disposition.FileName; - d.Inline = disposition.Inline; - d.ModificationDate = disposition.ModificationDate; - foreach (string k in disposition.Parameters.Keys) - d.Parameters.Add(k, disposition.Parameters[k]); - d.ReadDate = disposition.ReadDate; - d.Size = disposition.Size; + disposition.CopyTo(d); return d; } @@ -41,6 +32,24 @@ private SerializableContentDisposition(ContentDisposition disposition) { Size = disposition.Size; } + public void CopyTo(ContentDisposition disposition) { + if (disposition == null) + return; + + disposition.Inline = Inline; + disposition.DispositionType = DispositionType; + disposition.FileName = FileName; + disposition.CreationDate = CreationDate; + disposition.ModificationDate = ModificationDate; + disposition.ReadDate = ReadDate; + if (Size != -1L) + disposition.Size = Size; + + foreach (string k in Parameters.Keys) + if (disposition.Parameters.ContainsKey(k) == false) + disposition.Parameters.Add(k, Parameters[k]); + } + public DateTime CreationDate { get; set; } public string DispositionType { get; set; } public string FileName { get; set; }