【发布时间】: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端口吗朋友
-
您是否调试过确切引发异常的代码?
-
这取决于防火墙本身。由于我不知道是哪个防火墙,所以我无法帮助您。
-
您的网络管理员应该能够帮助您允许端口流量通过防火墙——如果这确实是问题所在。此外,如果您发布异常详细信息.. 这将有助于诊断问题。