2013-10-15 1 views
2
protected void Button2_Click(object sender, EventArgs e) {   
    //string vv; 
    //vv = (string)Session["FID"]; 
    DateTime sdt = DateTime.Today; 
    SqlConnection cn1 = new SqlConnection(); 
    SqlCommand cmd4 = new SqlCommand(); 

    cn1.ConnectionString = @"Data Source=BOPSERVER;Initial Catalog=Project;Integrated Security=True"; 

    String test = DateTime.Now.ToString("dd.MM.yyy"); 

    for (int i = 0; i <= GridView1.Rows.Count - 1; i++) { 

     string toemail = GridView1.Rows[i].Cells[2].Text; 
     string FID1 = GridView1.Rows[i].Cells[0].Text; 
     GridViewRow row = GridView1.Rows[i]; 
     CheckBox Ckbox = (CheckBox)row.FindControl("CheckBoxMark1"); 
     if (Ckbox.Checked == true) { 
      sendMail(toemail); 

      //ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Email send Succesfully')</script>"); 
      ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Email sent on " + test + "')</script>"); 

      cn1.Open(); 
      //cmd4.CommandText = "Insert into TrackingFaculty_det (EmailsentDate) values (@EmailsentDate) WHERE [email protected]"; 
      cmd4.CommandText = "update TrackingFaculty_det SET [email protected] WHERE [email protected] "; 
      cmd4.CommandType = CommandType.Text; 
      cmd4.Connection = cn1; 

      cmd4.Parameters.Clear(); 

      cmd4.Parameters.Add("@Email", SqlDbType.DateTime, 8); 
      cmd4.Parameters["@Email"].Value = sdt; 
      cmd4.Parameters.Add("@FID", SqlDbType.VarChar, 10); 
      cmd4.Parameters["@FID"].Value = FID1; 
      cmd4.ExecuteNonQuery(); 
      cn1.Close(); 
     }      
    } 
} 

public void sendMail(String toemail) { 
    try { 
     MailMessage mail = new MailMessage(); 
     mail.To.Add(toemail); 
     mail.From = new MailAddress("[email protected]"); 
     mail.Subject = "Remember Mail"; 
     // string Body = "Please update profile"; 
     //mail.Body = Body; 
     mail.Body = " Dear Sir/Madam \n\n\n Please update your profile. . \n\n\n Thanks & Regards \n\n\n MCIS,Manipal."; 
     //mail.Body = "<html><body> <h2" + "align=center>Dear Sir/Madam" + "</h2> Please update ur profile</body></html>"; 
     SmtpClient smtp = new SmtpClient(); 
     smtp.Host = "smtp.gmail.com"; 
     smtp.Port = 587; 
     smtp.UseDefaultCredentials = false; 
     smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "manipal15"); 
     smtp.EnableSsl = true; 
     smtp.Send(mail); 
    } catch (Exception ex) {    
     //System.ArgumentException argx = new System.ArgumentException("There is some problem in sending mail please try again later"); 
     //throw argx; 
     //Console.WriteLine("There is some problem in sending mail please try again later", ex.Message); 
     Response.Write(ex.ToString()); 
    } 

Эти строки кодов позволяет отправить mail используя smtp порт, Сво работает нормально. Просматривая другую перспективу, может быть exceptions, где может быть возможность ввода Dummy email, например [email protected], или может быть некоторая server issues, где по почте не может быть отправлено в указанное время или может быть какое-то другое исключение, в этом исключении экземпляра функции обработки должны быть введены в действие и должны отображать всплывающее окно или какое-либо сообщение об ошибке, такое как почта не может быть отправлена, есть ли какие-либо возможности?Обработка исключений Во время отправки почты с использованием порта SMTP

ответ

0

Вы можете просто добавить <asp:Label> над/под GridView и в случае excepetion установить его Text ошибки сообщение:

<asp:Label ID="lblMsg" runat="server"></asp:Label> 

..

try{ 
    sendMail(toemail); 
} 
catch(Exception ex){ 
    lblMsg.Text = ex.Message; // or whatever message you want to show 
    lblMsg.ForeColor = Color.Red // Red shows error 
} 

... 

public void sendMail(String toemail){ 

    try{ 
     ... 
    } 
    catch(Exception ex){ 
     throw ex; // Don't use Response.Write 
    } 
} 
6

В SMTP проблемы на уровне сервера должен обрабатываться с использованием SmtpException.
Таким образом, вы можете изменить свой улов блока следующим образом

catch (SmtpException ex) 
{  
    Response.Write(ex.ToString()); 
} 

Однако почтовые ящики проблемы иногда не обрабатываются SmtpException.
Для этого вы можете использовать SmtpFailedRecipientException, который используется для обертывания ошибок, сообщаемых из отдельного почтового ящика. Это исключение содержит свойство StatusCode типа enum, которое сообщит нам точную причину ошибки.

Пожалуйста, обратитесь следующим поймать блок

catch (SmtpFailedRecipientException ex)   
{ 
     SmtpStatusCode statusCode = ex.StatusCode;  

     if (statusCode == SmtpStatusCode.MailboxBusy || 
      statusCode == SmtpStatusCode.MailboxUnavailable || 
      statusCode == SmtpStatusCode.TransactionFailed) 
     {     
      // Display message like 'Mail box is busy', 'Mailbox is unavailable' or 'Transaction is failed' 
     } 
     else 
     { 
      throw; 
     } 
} 

Вы можете обрабатывать отдельные ошибки с помощью этого

+0

Если почта отправляются в '' Dummy' ID Ex: а @ gmail.com' Тогда что будет Решение –

+1

Лучший способ проверить электронную почту пользователя - это проверить его пользователя. Когда почта получена пользователем, попросите его щелкнуть по предоставленной ссылке в почте, чтобы проверить идентификатор электронной почты. Если пользователь проверяет, идентификатор почты не подделка. –

Смежные вопросы