2012-08-13 5 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

+5

Какова ошибка в точности и на какой строке? Также не рекомендуется включать ваши пароли, когда вы публикуете свой код здесь. –

+0

Если это ваш подлинный пароль в вашем примере кода, вы можете отредактировать его ... – drch

ответ

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

+0

gettin this error "SSL не должен быть включен для pickup-directory" – user1418723

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> 
Смежные вопросы