2011-12-02 74 views
2

我正在使用ASP.NET 3.5和C#在求助台上开发Web应用程序。 当用户提出投诉时,我会向管理员发送电子邮件。ASP.NET邮件附件不包含数据

我的问题是当用户发送附件(word,excel,jpg,bmp等) 的邮件给管理员时,附件不包含任何数据。

这里是我使用的代码示例:

MailMessage mm = new MailMessage(); 
mm.To.Add([email protected]); 
mm.From = new MailAddress("[email protected]"); 

if (FileUpload1.HasFile) /// for checking if mail has attachment 
{ 
    mm.Attachments.Add(new Attachment(FileUpload1.PostedFile.InputStream, ileUpload1.FileName)); 
} 

mm.body="Test Message"; 

mm.IsBodyHtml = true; 

//neceessary credentials are specified in web.config file 

SmtpClient ss = new SmtpClient(); 

ss.Send(mm); 
+0

你试过调试吗?你的代码看起来没问题,但是也许像'FileUpload1.HasFile'这样的'false',你希望它是真的。很难说,不经过它,看到一些运行时间值。就像我说的,你发布的代码乍看起来很好(尽管我可能会错过一些东西)。 – 2011-12-02 04:05:07

+0

@Shark:管理员收到带有附件的邮件,但是当他打开它时,它是空的。 –

+0

是的,我已经厌倦了调试。 –

回答

2

要使用附件发送邮件,您必须首先从服务器上的fileuploader保存文件,那么您可以在发送邮件作为附件。目前的问题在于,您直接尝试从文件上传控件发送邮件中的文件。

一旦邮件与附件一起发送,那么您可以从服务器上删除保存的文件。

1

我怀疑你有这个问题,因为流的当前位置是在最后。

您可以在调用附件构造函数并添加之前尝试FileUpload1.PostedFile.InputStream。

我还没有真正尝试过这个验证,但我希望这是空虚的来源 - 流被读取结束,但它已经在最后,因为读取内容到最后。我以前在河流中见过类似的东西。

相关问题