IMime |
| Exception | Condition |
|---|---|
| ObjectDisposedException | The IMimePart has been disposed. |
First checks for the "filename" parameter on the Content-Disposition header. If that does not exist, then the "name" parameter on the Content-Type header is used.
When setting the filename, both the "filename" parameter on the Content-Disposition header and the "name" parameter on the Content-Type header are set.
foreach (var attachment in message.Attachments) { if (attachment is MessagePart) { var fileName = attachment.ContentDisposition?.FileName ?? attachment.ContentType.Name; var rfc822 = (MessagePart) attachment; if (string.IsNullOrEmpty (fileName)) fileName = "attached-message.eml"; // make sure that the filename value does not contain a full path or invalid path characters fileName = Path.GetFileName (fileName); using (var stream = File.Create (fileName)) rfc822.Message.WriteTo (stream); } else { var part = (MimePart) attachment; var fileName = part.FileName; if (string.IsNullOrEmpty (fileName)) fileName = "untitled.dat"; // make sure that the filename value does not contain a full path or invalid path characters fileName = Path.GetFileName (fileName); using (var stream = File.Create (fileName)) part.Content.DecodeTo (stream); } }