在 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 电子邮件帐户发送电子邮件?

雅虎邮箱的 C# SMTP 电子邮件发送代码失败,但适用于其他服务器,有人可以帮忙吗?

Gmail API 创建和发送电子邮件 .NET C#

发送邮件失败 - c# - godaddy

C# 中的零星 SMTP 电子邮件发送失败

发送电子邮件 asp.net c#