为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 MimeKit/MailKit 设置自定义内容传输编码?

如何使用 MimeKit/MailKit 设置自定义内容传输编码?

C#
PIPIONE 2022-10-15 15:07:32
这个问题是关于我认为“打破标准”的问题,我知道 MimeKit 可能被设置为专门不允许我做我要问的事情。这些自定义消息将仅在内部使用,不用于常规电子邮件发送。以下是我可以使用基本功能创建的附件:Content-Type: application/octet-stream; name=example.txtContent-Disposition: attachment; filename=example.txtContent-Transfer-Encoding: base64**BASE64 ENCODED ATTACHMENT**我想知道的是是否可以创建以下内容:Content-Type: application/octet-stream; name=example.txt; type=****Content-Disposition: attachment; filename=example.txtContent-Transfer-Encoding: *******CUSTOM ENCODED ATTACHMENT**我有一个自定义字符串来设置“Content-Transfer-Encoding”,可能是“Content-Type”下的自定义“类型”,并且还使用我自己的自定义代码对消息进行编码。我假设自定义编码我的消息的最简单方法是在 MimeKit 之外执行此操作,然后将 MimeKit 设置为不编码。无论如何,我可以创建只包含我想要的字符串的自定义标题吗?额外问题:我将如何改变:Content-Type: application/octet-stream; name=example.txtContent-Disposition: attachment; filename=example.txt至:Content-Type: application/octet-stream; name="example.txt"Content-Disposition: attachment; filename="example.txt"
查看完整描述

2 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

正如您在自己的答案中发现的那样,如果您不设置ContentTransferEncoding属性,则可以使用 Headers.Replace() 甚至 Headers.Add() 覆盖 Content-Transfer-Encoding 标头。

我想您的另一个主要问题是如何获得自定义编码内容?

而不是这样做:

Content = new MimeContent(File.OpenRead(file), ContentEncoding.Default),

您需要做的就是将预编码的流传MimeContent递到 .ctor 中(并继续ContentEncoding.Default用作第二个参数)。

如果需要type在 Content-Type 标头中设置参数,可以这样做:

attachment.ContentType.Parameters.Add("type", "value");

或者

var parameter = new Parameter ("name", "value");attachment.ContentType.Parameters.Add (parameter);

或者

attachment.ContentType.Parameters["type"] = "value";

剩下的唯一问题是如何强制引用参数值。为此,你不走运。MimeKit 仅在由于值中的字符而需要引用该值时才会引用该值。


查看完整回答
反对 回复 2022-10-15
?
富国沪深

TA贡献1790条经验 获得超9个赞

我发现我的答案之一是替换标题:


var attachment = new MimePart("application", "octet-stream")

{

    Content = new MimeContent(File.OpenRead(file), ContentEncoding.Default),

    ContentDisposition = new ContentDisposition(ContentDisposition.Attachment),

    ContentTransferEncoding = ContentEncoding.Base64,

    FileName = Path.GetFileName(file),

};


attachment.Headers.Replace("Content-Transfer-Encoding", "******");


查看完整回答
反对 回复 2022-10-15
  • 2 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信