这个问题是关于我认为是“违反标准”的问题,并且我了解MimeKit可能已设置为明确不允许我执行我要问的事情。这些自定义消息将仅在内部使用,而不用于常规电子邮件发送。
以下是我可以使用基本功能创建的附件:
Content-Type: application/octet-stream; name=example.txt
Content-Disposition: attachment; filename=example.txt
Content-Transfer-Encoding: base64
**BASE64 ENCODED ATTACHMENT**
我想知道的是是否有可能创建以下内容:
Content-Type: application/octet-stream; name=example.txt; type=****
Content-Disposition: attachment; filename=example.txt
Content-Transfer-Encoding: *****
**CUSTOM ENCODED ATTACHMENT**
在这里,我有一个自定义字符串来设置“ Content-Transfer-Encoding”,可能是“ Content-Type”下的一个自定义“ type”,并且还使用我自己的自定义代码对消息进行编码。
我假设对消息进行自定义编码的最简单方法是在MimeKit之外执行此操作,然后将MimeKit设置为不进行编码。无论如何,我可以创建仅包含所需字符串的自定义标头吗?
其他问题:
我该如何改变:
Content-Type: application/octet-stream; name=example.txt
Content-Disposition: attachment; filename=example.txt
收件人:
Content-Type: application/octet-stream; name="example.txt"
Content-Disposition: attachment; filename="example.txt"
答案 0 :(得分:1)
正如您在自己的答案中所发现的那样,如果未设置ContentTransferEncoding
属性,则可以使用Headers.Replace()甚至Headers.Add()覆盖Content-Transfer-Encoding标头
我想您的另一个主要问题是如何获取自定义编码内容?
代替:
Content = new MimeContent(File.OpenRead(file), ContentEncoding.Default),
您需要做的就是将预编码的流传递到MimeContent
.ctor中(并继续使用ContentEncoding.Default
作为第二个参数)。
如果您需要在Content-Type标头中设置type
参数,则可以执行以下操作:
attachment.ContentType.Parameters.Add("type", "value");
或
var parameter = new Parameter ("name", "value");
attachment.ContentType.Parameters.Add (parameter);
或
attachment.ContentType.Parameters["type"] = "value";
剩下的唯一问题是如何强制引用的参数值。为此,您不走运。 MimeKit仅在由于值中的字符而需要对其进行引用时才引用该值。
答案 1 :(得分:0)
我发现我的答案之一是替换标题:
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", "******");