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
属性的字符集
属性设置为