2012-08-13 284 views
1

我已经创建了一个应用程序,因为我已经给出了发送邮件的选项。它一直工作到昨天。但是,今天我收到了一个错误,发送邮件如“发送邮件失败。”。为此,我已在下面给出了我的代码,请帮我解决它。C#发送邮件失败

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("[email protected]"); 
        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("[email protected]", "xxxxx"); 
        //smtp.Credentials = new NetworkCredential("purchaseoeg", "xxxxx"); 
        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); 
     } 

    } 
+0

提供您挂在嘴边的一句话的的InnerException,并且如果这些是你的实际凭据,请更改他们。 – Dominik 2012-08-13 11:08:09

+5

准确地在哪条线上出现错误?当您在此处发布您的代码时,包含您的密码也不是一个好主意。 – 2012-08-13 11:08:15

+0

如果这是您示例代码中的真实密码,那么您可能需要编辑该代码... – drch 2012-08-13 11:08:21

回答

0

如果它曾经工作过,现在它不是它可能是SMTP服务器。

<system.net> 
    <mailSettings> 
    <smtp deliveryMethod="SpecifiedPickupDirectory"> 
     <specifiedPickupDirectory pickupDirectoryLocation="C:\TestMailMessages\" /> 
    </smtp> 
    </mailSettings> 
</system.net> 

将上面的代码放在你的App.config或Web.config中。当你发送一条消息时(通过var smtpClient = new SmtpClient();)它现在将作为一个文件存储在“pickupDirectoryLocation”的目录中。

如果邮件到达还有OK,然后你的代码是罚款

那么你可能会转移到测试您的SMTP设置/测试服务器。有很多方法可以做到这一点,包括使用Telnet。

如果问题是间歇性的,可能会向SMTP发送添加重试逻辑。

+0

不在工作的朋友 – user1418723 2012-08-13 12:12:46

+0

开始发送此错误“不能为拾取目录启用SSL” – user1418723 2012-08-13 12:17:21

0

公共字符串btnSendmail(){

 try 
     { 
     //Code for send Email 
     string msg = txtEmail.Text; 
     MailMessage sendMailforSA = new MailMessage(); 
     SmtpClient smtpforSA = new SmtpClient(); 
     string subjectforSA = null; 
     subjectforSA = "Thanks for apply"; 
     System.Net.NetworkCredential credforSA = new System.Net.NetworkCredential("[email protected]", "password"); 
     sendMailforSA.To.Add("ToEmailID"); 


     sendMailforSA.From = new MailAddress("[email protected]"); 
     sendMailforSA.Subject = subjectforSA.ToString(); 
     sendMailforSA.Body = "hiii This is Test Message"; 
     sendMailforSA.IsBodyHtml = false; 
     smtpforSA.Host = "smtp.gmail.com"; 
     smtpforSA.Port = 587; 
     smtpforSA.EnableSsl = true; 
     smtpforSA.UseDefaultCredentials = false; 
     smtpforSA.Credentials = credforSA; 
     smtpforSA.Send(sendMailforSA); 
     return "Email successfully sent."; 
     } 
     catch (Exception ex) 
     { 
      return "Send Email Failed." + ex.Message; 
     } 
    } 

在web.config文件中还写

<system.net> 
     <mailSettings> 
     <smtp from="[email protected]"> 
     <network host="smtp.gmail.com" port="587" userName="[email protected]" password="password" defaultCredentials="false"/> 

     </smtp> 

    </mailSettings> 
    </system.net>