使用System.Net.Mail.SmtpClient发送MailMessage:为什么邮件正文附加为文本文件?

时间:2010-03-10 19:39:19

标签: asp.net email smtpclient

我发送的邮件是System.Net.Mail.SmtpClient:

MailMessage aMailMessage = new MailMessage();
aMailMessage.To.Add(aUser.Email);
aMailMessage.Subject = "aaa";
aMailMessage.Body = "bbb";

SmtpClient aSmtpClient = new SmtpClient();
aSmtpClient.Send(aMailMessage);

电子邮件是作为文本邮件收到的(主题为“aaa”和正文“bbb”,但是对于此邮件另外附加了一个文本文件:文件名“aaa”和内容“bbb”。

为什么附加了这个文本文件,如何避免它?

谢谢你的帮助!

更新

忽略这个问题:我的邮件客户端显然是一个临时问题我以前收到测试邮件。重新启动邮件客户端后,问题就消失了。

1 个答案:

答案 0 :(得分:2)

在SMTP邮件中插入附件的方式与邮件的备用版本相同。主要部分的消息头具有MIME类型,意思是“多部分”,并定义了定界符。然后,包含几个子消息,由该分隔符分隔。每个子消息都标有MIME部分,用于定义正文或附件的格式。例如,Word文件被标记为“application / ms-word”,而纯文本部分标记为text / plain或HTML标记为text / html。

在SmtpClient的实现中(由于Reflector我看了它),如果没有附件而没有备用版本,则会自动创建HTML子消息。因此,像Outlook 2000这样的旧客户端认为存在附件,因为我猜它不支持备用视图的概念(因此,MIME类型text / html是附件)。

奇怪的是它之前没有发生过(或者你没有注意到)。也许之前的消息有一个您明确设置的附件或备用视图。