2017-07-27 1 views
0

Je voudrais avoir une barre de progression lors de l'envoi de l'e-mail généré automatiquement, mais je reçois des erreurs. S'il vous plaît aidez-moi à résoudre ce problème. Tout type de réponse est grandement apprécié. Je ne sais pas si je suis sur la bonne voie, je suis un débutant sur C# et je me fie uniquement aux guides en ligne.J'ai une erreur sur la barre de progression lors de l'envoi d'un e-mail

Cette ligne a l'erreur

new System.Threading.Thread(new System.Threading.ThreadStart(btnSend_Click));

private void btnSend_Click(object sender, EventArgs e) 
    { 
     //Cursor.Current = Cursors.WaitCursor; 

     try 
     { 
      MailMessage loginInfo = new MailMessage(); 
      string em = "[email protected]"; 
      loginInfo.To.Add(em.ToString()); 
      loginInfo.From = new MailAddress("[email protected]"); 
      loginInfo.Subject = "Requesting Supplies"; 

      loginInfo.Body = "We want another supplies for blah blah blah" + System.Environment.NewLine + 
      "This is a system generated email."; 
      loginInfo.IsBodyHtml = true; 
      SmtpClient smtp = new SmtpClient(); 
      smtp.Host = "smtp.gmail.com"; 
      smtp.Port = 587; 
      smtp.EnableSsl = true; 
      smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "*Pass*"); 
      smtp.Send(loginInfo); 
      MessageBox.Show("Email has been sent!", "Sent", MessageBoxButtons.OK); 

      progressBar1.Visible = true; 
      progressBar1.Style = ProgressBarStyle.Marquee; 
      System.Threading.Thread thread = 
       new System.Threading.Thread(new System.Threading.ThreadStart(btnSend_Click)); 
      thread.Start(); 
     } 
     catch 
     { 
      MessageBox.Show("Message not sent please check you internet connection", "Not Sent", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); 

     } 
    } 
+0

Quelle est l'exception? –

+0

Vous pouvez supprimer le 'try/catch', ou au moins modifier le' catch' pour seulement attraper les exceptions spécifiques que vous savez comment traiter –

+1

Il semble que vous démarrez un thread qui recommence la même méthode encore et encore encore une fois ... cela ressemble à une boucle sans fin. –

Répondre

2

Utilisez SendAsync et abonnez-vous à SendCompleted. Cela vous informera que le processus d'envoi est terminé. Je ne crois pas qu'il soit possible d'obtenir la progression de l'email d'envoi.