我在邮件附件方面遇到问题。我正在使用fileupload控件来获取路径 来自本地机器的文件。
它提供了正确的路径,但在从任何文件夹中附加文件时,它给出错误“邮件附件无效”。
以下是代码..
protected void sndmail_Click(object sender, EventArgs e)
{
objmail = new MailMessage();
objmail.From = txt_sender.Text;
objmail.To = txt_recipient.Text;
objmail.Cc = txt_cc.Text;
objmail.BodyFormat = MailFormat.Text;
objmail.Priority = MailPriority.High;
objmail.Subject = txt_sub.Text;
objmail.Body = txt_body.Text;
SmtpMail.SmtpServer = "localhost";
SmtpMail.Send(objmail);
Response.Write("Mail send successfully...");
}
protected void attch_Click(object sender, EventArgs e)
{
string mypath = System.IO.Path.GetFullPath(FileUpload1.FileName);
MessageBox.Show(mypath);
MailAttachment attch = new MailAttachment(mypath);
objmail.Attachments.Add(attch);
}
你能帮我弄清楚为什么我会看到这个错误吗?
答案 0 :(得分:1)
FileUpload控件的FileName属性将为您提供客户端上文件的名称,而创建邮件消息的代码正在服务器上运行。您需要先将文件存储在服务器上,然后在创建邮件附件时参考该路径。
string fileNameOnServer = Path.Combine("<some writeable path on your server>", FileUpload1.FileName);
FileUpload1.SaveAs(fileNameOnServer);
// now you can user fileNameOnServer to attach the file to a mail message
objMail.Attachments.Add(new Attachment(fileNameOnServer));
答案 1 :(得分:1)
执行objmail.Attachments.Add(attch);
代码时,objmail
变量未实例化,因此您收到错误。
这行代码应该在sndmail_Click
objmail = new MailMessage();
方法编写
请注意,attch
是attch_Click
方法中的局部变量,无法在sndmail_Click
方法中访问。您应该将此变量用于两个方法,因此声明您声明objmail
变量的位置。
修改强>:
但是,正如Fredrick在回答中所述,您需要使用attch_Click
方法将文件保存在服务器中,并使用sndmail_Click
方法将保存的文件添加到objmail.Attachments
集合中
答案 2 :(得分:0)
objmail = new MailMessage();
objmail.Attachments.Add(new MailAttachment(FileUpload1.PostedFile.FileName));
objmail.From = txt_sender.Text;
objmail.To = txt_recipient.Text;
objmail.BodyFormat = MailFormat.Text;
objmail.Priority = MailPriority.High;
objmail.Subject = txt_sub.Text;
objmail.Body = txt_body.Text;
SmtpMail.SmtpServer = "";
SmtpMail.Send(objmail);
Response.Write("Mail send successfully...");
现在它的工作文件.... 使用这一行......(SmtpMail.SmtpServer =“”;)
感谢alll回复...