我有一个页面有文件上载控件,在提交表单时,当fileupload控件有文件时,文件通过邮件附件发送并且工作正常,但是当fileupload控件没有文件时,< strong> ATT00006.dat 文件会自动通过电子邮件附件发送。
参考网址:http://nextech.pk/Enquiry.aspx?Enq=cu
预先感谢您提供任何帮助
编辑 - 代码:
hpf = fup1.PostedFile;
String toEmail = "test@hotmail.com";
String fromEmail = "mailer@hotmail.com";
MailMessage objMail = new MailMessage(fromEmail, toEmail);
objMail.IsBodyHtml = true;
StringBuilder MailBody = new StringBuilder();
MailBody.Append("<html><head></head><body> <br>");
MailBody.Append("<br>" + "An enquiry is filed <br><br>");
MailBody.Append("<strong><u>Enquirer Information</u></strong>" + "<br><br>");
MailBody.Append("<strong>Contact Name:</strong>	" + txtFirstName.Text + "<br>");
MailBody.Append("<strong>Email:</strong>			 " + txtEmail.Text + "<br>");
MailBody.Append("<strong>Institute:</strong>		 " + txtInstitute.Text + "<br>");
MailBody.Append("<strong>Phone #:</strong>		 " + txtPhone.Text + "<br>");
MailBody.Append("<br><strong>Description:</strong><br>         " + txtEnquiry.Text + "<br>");
if (hpf != null)
{
MailBody.Append("<br>" + "This email also contains an attachment:- <Strong>(" + hpf.FileName + ")</Strong><br>");
}
MailBody.Append("</body></html>");
objMail.Body = MailBody.ToString();
if (hpf != null)
{
System.IO.Stream inputStream = hpf.InputStream;
String fileName = hpf.FileName;
Attachment attach = new Attachment(inputStream, fileName);
objMail.Attachments.Add(attach);
}
SmtpClient SmtpClnt = new SmtpClient();
SmtpClnt.Send(objMail);
答案 0 :(得分:2)
我不知道你是否得到了答案,但我最近详细研究了这个问题。出现此问题的原因是您没有为附件提供显式名称。除非明确定义名称,否则ASP.NET将始终附加为.DAT。
问题是人们认为ASP.NET会使用文件名作为附件名称,但这并不会发生!
在您的代码中,您应该创建附件的实例,然后使用FileUpload.FileName属性显式提供名称:
Dim att As New System.Net.Mail.Attachment(fu.PostedFile.InputStream, System.Net.Mime.MediaTypeNames.Application.Octet) ' use Octet for binary files '
att.Name = fu.FileName ' get the file name and type automatically '
mm.Attachments.Add(att)
答案 1 :(得分:0)
我认为您使用的邮件服务器(或邮件服务器使用的防病毒软件)会自动添加此文件。
有问题的文件是否包含任何内容,或者它是否为空?
答案 2 :(得分:0)
它是系统无法理解的附件类型的不匹配。如果没有文件作为附件,请发布您的代码以及您的操作。