2010-03-10 82 views
1

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

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”。

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

谢谢你的帮忙!

更新

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

+0

我用了很多次,并没有这种行为。 - 您使用的是哪种邮件客户端? - 你使用什么邮件服务器? – BlackICE 2010-03-10 19:51:52

+0

我也会问关于邮件客户端的问题......你是否确认过使用多个邮件客户端? – Albert 2010-03-10 19:59:15

+0

客户端:MS Outlook 2000,服务器:无,直接连接到我们的外部Internet/Mail提供商。奇怪的是:我几个月前在另一个项目中以相同的方式使用它,并没有这个问题。我现在看到的唯一差别是旧项目是ASP“WebSite”类型,这是ASP“WebApplication”类型。但我不能相信这起到了一定的作用。 – Slauma 2010-03-10 20:05:47

回答

2

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

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

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

+0

感谢您的解释,Timores!但是这个问题在重新启动Outlook之后神奇地消失了(请参阅我对该问题的评论)。这真的没有发生在我的旧项目中,我刚刚在我的Inbound文件夹中查看旧的测试邮件,并且它们都没有附件。似乎是一个暂时的展望问题。 – Slauma 2010-03-10 20:48:37

相关问题