2017-06-05 6 views
0

Ich möchte eine E-Mail an mehr als 2 Personen mit meiner eigenen Datenbank senden. Also verwende ich for-Schleife, um eine E-Mail zu senden. Und es wird gut an eine erste Person gesendet (mail_data.Rows [0] [0]), aber nicht für die zweite Person. (Mail_data.Rows [1] [0]) Der Code endet vor smtp.Send (mm). Die E-Mail-Adresse der zweiten Person ist genau richtig. Ich habe keine Ahnung, warum der Code dort aufhört.smtp funktioniert nicht für for loops

private void Email() 
    { 
     //get the data from database 
     DataTable data = GetData(); 
     DataTable email_data = GetEmailData(); 

     data.TableName = "Employee_Data"; 

       .... 


       String from = "[email protected]"; 

       for (int i = 0; i <= email_data.Rows.Count; i++) 
       { 
        String to = email_data.Rows[i][0].ToString(); 

        using (MailMessage mm = new MailMessage(from, to)) 
        { 
         this.WriteToFile(to); 
         using (SmtpClient smtp = new SmtpClient()) 
         { 

          mm.Subject = "Fresh NSO Updated List"; 

          mm.AlternateViews.Add(body); 
          mm.Attachments.Add(new Attachment(new MemoryStream(bytes), "NSOList.xlsx")); 
          mm.IsBodyHtml = true; 

          smtp.Host = "smtp.gmail.com"; 
          smtp.EnableSsl = true; 
          System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(); 
          credentials.UserName = "[email protected]"; 
          credentials.Password = "aa"; 
          smtp.UseDefaultCredentials = true; 
          smtp.Credentials = credentials; 
          smtp.Port = 587; 

          this.WriteToFile("beforeSend"); 
          Thread.Sleep(1000); 
      //just stop here on second loop, 
          smtp.Send(mm); 
          this.WriteToFile("Sent!"); 
         } 

        } 

       } 
      } 
+4

Was meinen Sie mit Stopps? Wird eine Ausnahme ausgelöst? Ist es an senden hängen? Hast du wirklich dein echtes Passwort in diese Stack Overflow Frage eingebettet? Schreckliche Idee. Sie müssen Ihr Passwort sofort ändern. – mason

+3

Statt separater Nachrichten, könnten Sie nicht einfach alle Empfänger zum BCC-Feld einer einzelnen E-Mail hinzufügen? – Andy

+0

@Mason oh yeah..Es war mein Fehler, ich ändere direkt nach diesem sehen..danke. Wenn ich den Code ausführte, blieb er bei der zweiten for-Schleife hängen. – Scarlett

Antwort

0

Anstatt das Senden einzelner E-Mails an jeden Empfänger, wenn sie alle den gleichen Inhalt haben, sollten Sie die BCC (Blind Carbon Copy) Feld verwenden die gleiche E-Mail an mehrere Empfänger zu senden und dennoch Privatsphäre für alle ihre E-Mail-Adressen.

Sie können das Feld to auf Ihre E-Mail-Adresse (des Absenders) setzen, damit sie an jemanden adressiert ist.

Dies ist eine effizientere Lösung und hat das gleiche Gesamtergebnis.