我们使用 System.Net.Mail 将电子邮件作为带有附件的文本发送。附件是Excel 和 Powerpoint文件。内容类型在发送电子邮件之前设置为 MIME 类型。
对三封电子邮件进行的测试证明,Exchange 服务器在每种情况下都记录了 26% 的增长。
有没有办法阻止这种消息大小的增加?
如果没有,是否有另一种 .NET 或开源替代方案?
SMTP Drop 会解决这个问题吗?
更新:
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 消息。
BinaryMime 的 SMTP 服务器功能标志返回 true。
如果 ContentTransferEncoding 是 Base64 它可以工作(附有 9 个 excel 和 powerpoint 文件)。如果我将其更改为二进制,则仅附加一个损坏的 excel 文件。我在这里想念什么?