1

我正在使用 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”。

为什么要附加此文本文件,如何避免?

谢谢你的帮助!

更新

忽略这个问题:这显然是我用来接收测试邮件的邮件客户端的临时问题。重新启动邮件客户端后问题消失了。

4

1 回答 1

2

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

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

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

于 2010-03-10T20:32:55.980 回答