发送带有附件C#的邮件

  • 本文关键字: c# asp.net .net web-farm
  • 更新时间 :
  • 英文 :


我正在编写一个应用程序,该应用程序应该发送一封最多有3个附件的电子邮件。

这只是一个非常简单的web表单,有3个FileUpload控件来浏览可能的附件。

该应用程序部署在Web场中,当然在服务器端运行。

我设法让它发送了电子邮件,但附件有问题。现在,我正在使用这个程序来附加文件:

if (fuAttatchment.HasFile)
{                        
fuAttatchment.SaveAs(Server.MapPath(fuAttatchment.FileName));
MyMessage.Attachments.Add(new System.Net.Mail.Attachment(Server.MapPath(fuAttatchment.FileName))); 
filesize += fuAttatchment.PostedFile.ContentLength;
}

我提交后收到的错误如下:

发送失败:System.UnauthorizedAccessException:拒绝访问路径"E:\Inetpub\IS\MTicketRequest\wallpaper-3010.jpg"。System.IO.FileStream.Init(字符串路径、FileMode模式、FileAccess访问、Int32权限、布尔使用权限、FileShare共享、Int32缓冲区大小、FileOptions选项、SECURITY_ATTRIBUTES secAttrs、字符串msgPath、布尔bFromProxy、布尔使用LongPath)处的System.IO.__Error.WinIOError(Int32错误代码,字符串可能为FullPath)(字符串路径、FileMode模式、FileAccess访问、FileShare共享、Int32缓冲区大小、FileOptions选项、字符串消息路径、布尔bFromProxy)在System.IO.FileStream.ctor(字符串路径,FileMode模式)在System.Web.UI.WebControls.FileUpload.SaveAs(字符串文件名)在MSTicketRequest.WebForm1.btnSubmit_Click(Object sender,EventArgs e)中C: \Users\ggruschka\Desktop\ggruschca\MTicketRequest\MTicketRequest \Default.aspx。cs:line 54

我一直不明白为什么会发生这种情况,可能我在安全策略或类似的方面遗漏了一些东西。

事先非常感谢您的帮助!

而不是这个:

fuAttatchment.SaveAs(Server.MapPath(fuAttatchment.FileName));
MyMessage.Attachments.Add(new System.Net.Mail.Attachment(Server.MapPath(fuAttatchment.FileName))); 

这样做:

fuAttatchment.SaveAs("somewhere local"+fuAttatchment.FileName);
MyMessage.Attachments.Add(new System.Net.Mail.Attachment("somewhere local"+fuAttatchment.FileName)); 

您不需要将附件保存在服务器上!

看起来运行站点的用户没有写入目标文件路径的权限。请检查目录的安全权限,并确保IIS用户具有写访问权限。

取决于应用程序池的类型。但如果是networkservice,则必须添加networkservice
ApplicationPoolIdentity的IIS_Users,但我对此不确定。http://www.windowsecurity.com/articles/understanding-windows-ntfs-permissions.html

如果这没有帮助,你可以尝试删除只读选项。

您可以通过gmail帐户发送电子邮件。下面是怎么做的(我不知道它是否有用)。1.您需要在要上传附件的文本框中。2.按钮"浏览"one_answers"OpenFileDialog1"。在"浏览"按钮中,您放置此

private void btnBrowse_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
txt_attachment.Text = openFileDialog1.FileName;
}
}

你需要按钮"发送一个附件",你在其中放置这个:

MailMessage mail = new MailMessage(txt_gmail.Text, txt_to.Text, txt_subject.Text, txt_body.Text);
mail.Attachments.Add(new Attachment(txt_attachment.Text));
SmtpClient client = new SmtpClient(txt_server.Text);
client.Port = 587;
client.Credentials = new System.Net.NetworkCredential(txt_gmail.Text, txt_password.Text);
client.EnableSsl = true;
client.Send(mail);
MessageBox.Show("Mail sent", "Succes", MessageBoxButtons.OK);
foreach (Control control in this.Controls)
{
TextBox box = control as TextBox;
if (box != null)
{
box.Text = "";
}
}
}

最后一件事(因为当你这样做时,它会显示一些错误),你需要创建Gmail.dll文件。这里有一个链接:在这里你可以创建Gmail.dll

我希望这能有所帮助。

相关内容

  • 没有找到相关文章

最新更新