邮件附件的.NET编码问题(.csv)

时间:2010-11-30 08:17:07

标签: c# encoding

我使用以下代码发送带有中文字符的附件(.csv)。但是,MS excel无法正确显示字符,它显示的内容类似于“¨å¯ææ-°ç”。是因为我在发送邮件时没有设置一些属性吗?

感谢您的任何建议。

                byte[] attachBytes = Encoding.UTF8.GetBytes(attachText);
                ms.Write(attachBytes, 0, attachBytes.Length);
                // Set the position to the beginning of the stream.
                ms.Position = 0;
                ContentType ct = new ContentType(MediaTypeNames.Text.Plain);

                Attachment attactment = new Attachment(ms, attachFileName);
                message.Attachments.Add(attactment);

3 个答案:

答案 0 :(得分:1)

我认为您需要为邮件正文对象设置额外的编码设置,如下所示:

message.BodyEncoding = UTF8

答案 1 :(得分:1)

将附件编码设置为Encoding.UTF32可能有所帮助。假设attachTextstring并且您只想添加.csv,则可以使用Attachment.CreateAttachmentFromString()方法缩短代码:

var attachment = Attachment.CreateAttachmentFromString(attachText,
                                                       "filename.csv",
                                                       Encoding.UTF32,
                                                       "text/csv");
message.Attachments.Add(attachment);

答案 2 :(得分:0)

我找到了解决方法:

O(|E| + |V|)

对我来说很好