c# - Mailkit MimeKit.MimeMessage 错误:未知的初始化参数: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 []
其次,我阅读了这个很好的答案Forward email using MailKit (C#)以及什么是重新发送参数?如果我设置他们我对转发电子邮件的评论未设置?那封电子邮件没有任何变化就清楚地重新发送了?
解决方案
未知初始化参数:System.Byte[]
这意味着没有MimeMessage
带byte[]
参数的构造函数。
换句话说,你不能这样做:
var file = System.IO.File.ReadAllBytes("sample.eml"));
var orgMessage = new MimeKit.MimeMessage(file);
从文件加载消息的正确方法是这样做:
var orgMessage = MimeMessage.Load ("sample.eml");
其次,我阅读了这个很好的答案 Forward email using MailKit (C#) 以及什么是重新发送参数?如果我设置他们我对转发电子邮件的评论未设置?那封电子邮件没有任何变化就清楚地重新发送了?
这些MimeMessage.Resent*
属性仅在转发消息而不将其附加到新消息时使用。
您只需要在您链接到的我的答案中选择 3 个解决方案中的 1 个。
如果您要附加原始消息(就像您正在做的那样),那么您不应该Resent
使用MimeMessage
.
推荐阅读
- lua - Avatar 检查脚本始终返回“Instance”
- python - 为多个组件制作 Python 类的最佳方法?,例如 Chromatograpy
- php - 在PHP中查找数组中最大值的键
- android - Android Studio Button onClick Listener 不起作用
- group-by - 如何按天计算所有结果
- mysql - ORDER BY 中的索引位置(排名位置)
- opentok - OpenTok/Vonage Video API 中的主要发言人
- javascript - PDF Decoded Base64 PDF 可以用 chrome 和浏览器打开,但不能用 adobe
- amazon-web-services - 在 AWS 路由 53 上购买了一个域,并且该域已注册给其他人
- adsense - 谷歌广告只出现在首页