Mailkit MimeKit.MimeMessage error: Unknown initialization parameter: System.Byte[]

Mailkit MimeKit.MimeMessage error: Unknown initialization parameter: System.Byte[]

我想在添加一些评论后转发一封电子邮件。原始电子邮件保存为 eml 文件,所以首先我加载该文件,然后将我的评论添加到正文或附加一些新文件,然后重新发送电子邮件到新的电子邮件地址。

var mail = new MimeKit.MimeMessage();
var file = System.IO.File.ReadAllBytes("sample.eml"));
var orgMessage = new MimeKit.MimeMessage(file);

var builder = new MimeKit.BodyBuilder();
builder.TextBody = "user comment";
builder.Attachments.Add(new MimeKit.MessagePart { Message = orgMessage });
mail.Body = builder.ToMessageBody();

首先在第 3 行我得到这个错误: 未知的初始化参数:System.Byte[]

其次我阅读了这个很棒的答案 什么是重新发送的参数?如果我设置它们,我对转发电子邮件的评论未设置?并且那封电子邮件很明显没有任何更改?

Unknown initialization parameter: System.Byte[]

这意味着没有 MimeMessage 构造函数采用 byte[] 参数。

换句话说,你不能这样做:

var file = System.IO.File.ReadAllBytes("sample.eml"));
var orgMessage = new MimeKit.MimeMessage(file);

从文件加载消息的正确方法是:

var orgMessage = MimeMessage.Load ("sample.eml");

Second I read this great answer Forward email using MailKit (C#) and what is resent parameters for? if i set them my comment on forwarded email not set? and that email resent clearly without any change?

MimeMessage.Resent* 属性仅在转发邮件而不将其附加到新邮件时使用。

您只需要在链接到我的答案的 3 个解决方案中选择一个。

如果您要附加原始邮件(就像您正在做的那样),那么您不应该使用 MimeMessage.

Resent 属性