Может ли кто-нибудь воссоздать эту проблему? Мне кажется, что это довольно серьезная ошибка в SmtpClient (.NET 4.0), но я не могу поверить, что никто этого не видел раньше, и Google, похоже, не показывает, кто видит подобную проблему.Вложение, отправленное SmtpClient, неверно, если используется свойство «Имя»
При отправке электронной почты с более чем 1 вложением и используется свойство «Attachment.Name», вложения будут иметь неправильные имена (например, 2 вложения будут заменены их именами). Работа вокруг (и на самом деле, вероятно, правильное свойство для установки) заключается в использовании ContentDisposition.FileName. Но мне было бы очень интересно, если это произойдет для всех. Может ли кто-нибудь воссоздать эту проблему? Мне кажется, что это довольно серьезная ошибка в SmtpClient (.NET 4.0), но я не могу поверить, что никто этого не видел раньше, и Google, похоже, не показывает, кто видит подобную проблему. Вам нужно создать несколько почтовых файлов в C: \ TMP \ emailin \
var zipCt = new ContentType { MediaType = MediaTypeNames.Application.Zip };
var attachmentA = new Attachment(@"c:\tmp\emailin\a.zip", zipCt);
attachmentA.ContentDisposition.FileName = "a.zip";
attachmentA.Name = "a.zip";
var attachmentB = new Attachment(@"c:\tmp\emailin\b.zip", zipCt);
attachmentB.ContentDisposition.FileName = "b.zip";
attachmentB.Name = "b.zip";
var msg = new MailMessage("[email protected]", "[email protected]")
{
Body = "body",
Subject = "subject"
};
msg.Attachments.Add(attachmentA);
msg.Attachments.Add(attachmentB);
using (var smtp = new SmtpClient())
{
smtp.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
smtp.PickupDirectoryLocation = @"c:\tmp\emailout\";
smtp.Send(msg);
}
Если вы теперь посмотрите на файл EML в C: \ TMP \ emailout \ вы увидите что-то вроде
X-Sender: [email protected]
X-Receiver: [email protected]
MIME-Version: 1.0
From: [email protected]
To: [email protected]
Date: 11 Apr 2012 12:36:48 +0100
Subject: subject
Content-Type: multipart/mixed; boundary=--boundary_0_1b7bb1ee-ba28-4258-b662-554adb7ff81a
----boundary_0_1b7bb1ee-ba28-4258-b662-554adb7ff81a
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
body
----boundary_0_1b7bb1ee-ba28-4258-b662-554adb7ff81a
Content-Type: application/zip; name=b.zip
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=a.zip
UEsDBAoAAAAAAG5ki0AAAAAAAAAAAAAAAAAFAAAAYS50eHRQSwECPwAKAAAAAABu
ZItAAAAAAAAAAAAAAAAABQAkAAAAAAAAACAAAAAAAAAAYS50eHQKACAAAAAAAAEA
GADa2JQw1xfNAdrYlDDXF80B2tiUMNcXzQFQSwUGAAAAAAEAAQBXAAAAIwAAAAAA
----boundary_0_1b7bb1ee-ba28-4258-b662-554adb7ff81a
Content-Type: application/zip; name=a.zip
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=b.zip
UEsDBAoAAAAAAHZki0AAAAAAAAAAAAAAAAAFAAAAYi50eHRQSwECPwAKAAAAAAB2
ZItAAAAAAAAAAAAAAAAABQAkAAAAAAAAACAAAAAAAAAAYi50eHQKACAAAAAAAAEA
GAD67/k51xfNAfrv+TnXF80B2tiUMNcXzQFQSwUGAAAAAAEAAQBXAAAAIwAAAAAA
----boundary_0_1b7bb1ee-ba28-4258-b662-554adb7ff81a--
Обратите внимание на то, как имена Content-Type: и Content-Disposition: не совпадают для каждого вложения.
Я что-то не так? Является ли это ошибкой, которую я должен регистрировать с помощью MS?
Спасибо. Это устранило проблему. Глупая ошибка! – Martyn