private static void DumpAttachment(string dir, AttachmentBase attachment) { string name = null; if (!string.IsNullOrEmpty(attachment.ContentType.Name)) { name = attachment.ContentType.Name; } else { name = attachment is AlternateView ? "alternate-view" : "attachment"; string ext = MimeUtility.GetFileExtensionFromMediaType(attachment.ContentType.MediaType); if (ext == "eml") { name = "attached-message"; } name = string.Format(name + "." + ext); } int i = 1; string shortname = null; while (File.Exists(dir + Path.DirectorySeparatorChar + name)) { FileInfo fi = new FileInfo(name); if (null == shortname) { shortname = fi.Name.Substring(0, fi.Name.Length - fi.Extension.Length); } name = string.Format("{0} ({1}){2}", shortname, i, fi.Extension); i++; } using (Stream stream = File.Create(dir + Path.DirectorySeparatorChar + name)) { byte[] buffer = new byte[32768]; while (true) { int read = attachment.ContentStream.Read(buffer, 0, buffer.Length); if (read <= 0) { break; } stream.Write(buffer, 0, read); } } }