MimeKit .Net Core:目标进程在评估函数“MimeKit.MimeMessage.ToString”时退出代码 -1073741819

问题描述

我正在使用 Mimekit/Mailkit 在我的 .Net 核心应用程序中转发邮件。 系统退出并出现以下错误: 目标进程在评估函数“MimeKit.MimeMessage.ToString”时退出代码 -1073741819

在执行这些行时:

   var builder = new BodyBuilder();
   builder.TextBody = forwardMail.Body ?? string.Empty;
   builder.Attachments.Add(new MessagePart { Message = message });
   message.Body = builder.ToMessageBody();

它一直在发生。为什么是这样?我该如何解决这个问题?

解决方法

您正在使消息递归。

message.Body = something that embeds message

当您对其调用 ToString() 时,消息首先写入 MemoryStream(并从那里转换为字符串)并且 MemoryStream 缓冲区必须继续无限增长,因为递归消息没有尽头。

您可能打算嵌入不同的消息,但您的代码的消息正文部分再次指向顶级消息,从而在写出时导致无限循环。