Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何设置System.Net.Mail.MailMessage的附件文件编码?_C#_.net_Encoding_Attachment_System.net.mail - Fatal编程技术网

C# 如何设置System.Net.Mail.MailMessage的附件文件编码?

C# 如何设置System.Net.Mail.MailMessage的附件文件编码?,c#,.net,encoding,attachment,system.net.mail,C#,.net,Encoding,Attachment,System.net.mail,我使用System.Net.Mail发送一系列带有附件的邮件 为此,我使用带有Encoding.UTF8的StreamWriter,用数据填充MemoryStream。 然后,我使用MemoryStream创建一个附件。我可以设置附件的MIME类型、文件名、文件名编码等。但我找不到的是,我如何显式设置附件编码 using (var ms = new MemoryStream()) using (var sw = new StreamWriter(ms, Encoding.UTF8)) {

我使用
System.Net.Mail
发送一系列带有
附件的
邮件

为此,我使用带有
Encoding.UTF8的
StreamWriter
,用数据填充
MemoryStream
。 然后,我使用
MemoryStream
创建一个
附件。我可以设置附件的MIME类型、文件名、文件名编码等。但我找不到的是,我如何显式设置附件编码

using (var ms = new MemoryStream())
using (var sw = new StreamWriter(ms, Encoding.UTF8))
{
    //Fill ms with data, using sw

    ms.Position = 0;
    Attachment att = new Attachment(ms, attachmentFileName, MediaTypeNames.Text.Plain);

    MailMessage.Attachments.Add(att);
    SmtpClient.Send(mailMessage);
}
如何/在何处说明所附文件的编码


我不是编码方面的专家,所以如果我试图实现一些完全无用和/或不可能的东西,我也想听听……

我在
附件中找到了这种静态方法:

public static Attachment CreateAttachmentFromString(
    string content,
    string name,
    Encoding contentEncoding,
    string mediaType
)
因此,这可能是解决方案:

Attachment att = Attachment.CreateAttachmentFromString(
    Encoding.UTF8.GetString(ms.ToArray()),
    attachmentFileName,
    Encoding.UTF8,
    System.Net.Mime.MediaTypeNames.Text.Plain);

它强制您从
字符串创建
,不过,我希望看到另一种只使用流的方法。

您可以将附件的
ContentType
属性的
字符集
属性设置为