Мы используем System.Net.Mail для отправки сообщений электронной почты как текст с вложениями. Вложения: Файлы Excel и Powerpoint. Перед отправкой электронной почты типы содержимого устанавливаются в типы MIME.System.Net.Mail альтернатива без увеличения размера сообщения
Тест, проведенный с тремя письмами, показал, что на сервере Exchange зафиксировано увеличение на 26% в каждом из случаев.
Есть ли способ остановить это увеличение размера сообщения?
Если нет, есть ли другая альтернатива .NET или с открытым исходным кодом?
Может ли SMTP Drop преодолеть эту проблему?
UPDATE:
var mimeMessage = new MimeMessage();
mimeMessage.From.Add(new MailboxAddress(string.Empty, fromEmailAddress));
mimeMessage.To.Add(new MailboxAddress(string.Empty, toEmailAddress));
mimeMessage.Cc.Add(new MailboxAddress(string.Empty, copyEmailAddress));
mimeMessage.Subject = subject;
var builder = new BodyBuilder { HtmlBody = bodyText };
MvcApplication.Logger.Info("SendEmail:attachmentFiles:Count=" + attachmentFiles.Count);
foreach (var attachmentFile in attachmentFiles)
{
var attachment = new MimePart()
{
ContentObject = new ContentObject(File.OpenRead(attachmentFile)),
ContentDisposition = new ContentDisposition(ContentDisposition.Attachment),
ContentTransferEncoding = ContentEncoding.Binary,
FileName = Path.GetFileName(attachmentFile)
};
builder.Attachments.Add(attachment);
}
MvcApplication.Logger.Info("SendEmail:attachmentFiles:Added Count=" + builder.Attachments.Count);
mimeMessage.Body = builder.ToMessageBody();
using (var client = new SmtpClient())
{
client.Connect("smtp.domain.com", 25, false);
client.Send(mimeMessage);
MvcApplication.Logger.Info(
client.Capabilities.HasFlag(SmtpCapabilities.BinaryMime)
? "SMTP Server supports BinaryMime"
: "SMTP Server does NOT support BinaryMime");
client.Disconnect(true);
}
Приведенный выше код посылает сообщение HTML успешно.
Флаг сервера SMTP для BinaryMime возвращает true.
Если ContentTransferEncoding является Base64, он работает (9 файлов Excel и PowerPoint прикреплены). Если я изменю его на двоичный, тогда будет прикреплен только один поврежденный файл excel. Что мне здесь не хватает?
Двоичные файлы должны быть закодированы как текст, это приводит к увеличению размера, поскольку доступный алфавит меньше байтов, это то, что вы видите? –
Я бы подумал, что если кодировка файла будет проблемой, он видел бы 33% -ное увеличение во всех случаях. Base64, используемый Exchange для кодирования двоичных файлов для передачи в виде вложения электронной почты, приводит к точному увеличению размера на 33%. – Kevin
Думаю, что да. Сначала я попробовал установку как «Октет», а затем попытался установить определенные типы MIME и раздул размер электронной почты. Outlook при ручной отправке одного и того же электронного письма с вложениями не раздувает размер. –