在 C# .net 中发送邮件失败
Posted
技术标签:
【中文标题】在 C# .net 中发送邮件失败【英文标题】:failure sending mail in C# .net 【发布时间】:2012-08-21 15:19:49 【问题描述】:我发送电子邮件的代码在 psat 两周内正常工作。但现在它显示一个错误,如
发送邮件失败。
我不知道为什么会出现这个问题。上周放了一些新的防火墙策略,是不是因为这个问题才提出来的?我该怎么办?
这是我的代码:
protected void Button1_Click(object sender, EventArgs e)
try
if (TextBox1.Text == "")
string alertmessage = "";
alertmessage = "Email ID. cannot be blank ";
this.CreateMessageAlert(this, alertmessage, "alertKey");
TextBox1.Focus();
else if (TextBox2.Text == "")
string alertmessage = "";
alertmessage = "CC To cannot be blank ";
this.CreateMessageAlert(this, alertmessage, "alertKey");
TextBox2.Focus();
else if (TextBox3.Text == "")
string alertmessage = "";
alertmessage = "Subject cannot be blank ";
this.CreateMessageAlert(this, alertmessage, "alertKey");
TextBox3.Focus();
else if (TextBox4.Text == "")
string alertmessage = "";
alertmessage = "Message Body cannot be blank ";
this.CreateMessageAlert(this, alertmessage, "alertKey");
TextBox4.Focus();
//else if (upSignature.FileName == "")
//
// ctr = 1;
// string alertmessage = "";
// alertmessage = "Attachment Missing...";
// this.CreateMessageAlert(this, alertmessage, "alertKey");
// upSignature.Focus();
//
else
string photo = "Enquiry" + Session["MRNO"].ToString() + FileUpload1.FileName;
string strpath = Request.MapPath("~/");
FileUpload1.SaveAs(strpath + "/Enquiry/" + photo);
try
MailMessage mail = new MailMessage();
mail.To.Add(new MailAddress(TextBox1.Text.Trim()));
mail.From = new MailAddress("XXXXXXX");
mail.Subject = "Enquiry for MRNO " + " " + " " + Session["MRNO"].ToString() + " " + " " + "Reg.";
mail.CC.Add(TextBox2.Text.Trim());
mail.Body = TextBox4.Text.Trim();
mail.Attachments.Add(new Attachment(FileUpload1.PostedFile.InputStream, FileUpload1.FileName));
mail.Attachments.Add(new Attachment(FileUpload2.PostedFile.InputStream, FileUpload2.FileName));
//Attachment attach = new Attachment(strpath + "/Enquiry/" + photo);
//mail.Attachments.Add(attach);
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
smtp.EnableSsl = true;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("XXXXXX", "XXXXXXX");
smtp.Send(mail);
string alertmessage = "";
alertmessage = "Mail Has Been Sent";
this.CreateMessageAlert(this, alertmessage, "alertKey");
// Page.RegisterStartupScript("close", "<script language=javascript>self.close();</script>");
catch (Exception ex)
Response.Write(ex.Message);
catch (Exception ex1)
Response.Write(ex1.Message);
【问题讨论】:
我敢打赌是防火墙导致了问题。您需要在防火墙上开放 587 端口。 @Sani Huttunen:你能告诉我如何在防火墙上打开587端口吗朋友 您是否调试过确切引发异常的代码? 这取决于防火墙本身。由于我不知道是哪个防火墙,所以我无法帮助您。 您的网络管理员应该能够帮助您允许端口流量通过防火墙——如果这确实是问题所在。此外,如果您发布异常详细信息.. 这将有助于诊断问题。 【参考方案1】:您需要打开 587 端口才能发送邮件。与您的网络团队核实此事并确保它已打开
【讨论】:
但是 yahoo 和 gmail 邮件可以发送和接收邮件,我的应用程序只能发送。因为我必须检查端口?? 使用***.com/questions/273159/…检查端口是否打开 还可以更改此链接中的设置,看看 Gmail 是否可以与您的 SMTP 服务器一起使用 lifehacker.com/111166/how-to-use-gmail-as-your-smtp-server 这将使您清楚地知道问题出在哪里:)以上是关于在 C# .net 中发送邮件失败的主要内容,如果未能解决你的问题,请参考以下文章
如何在 asp.net C# 中使用启用两因素身份验证的 office365 电子邮件帐户发送电子邮件?