我使用System.Net.Mail
与MailMessage
发送一系列Attachment
。
为此,我使用MemoryStream
StreamWriter
填充Encoding.UTF8
数据。
然后,我使用Attachment
创建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);
}
我如何/在哪里说明附件的编码?
我不是编码方面的专家,所以如果我想要完成一些完全无用和/或不可能的事情,我也希望听到它......
答案 0 :(得分:1)
我在Attachment
中找到了这个静态方法:
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);
它会强制您从string
创建,但我希望看到另一种仅使用流的方法。
答案 1 :(得分:1)
您可以将附件的Charset
属性的ContentType
属性设置为valid value。