2016-06-21 18 views
2

Ich versuche, mehrere E-Mails (> 10) Mailaddress Klasse zu senden, aber anscheinend ist es nicht gefällt. gibt es eine Möglichkeit, E-Mails nach dem 6. bis CC anzuhängen?cc (mail) nach sagen 6. E-Mail

oder irgendwelche anderen Arbeiten herum?

ich habe:

(<[email protected]>; <[email protected]>; <[email protected]>, <[email protected]>; <[email protected]>; \r\n\t<[email protected]>, <[email protected]>; <[email protected]>\r\n\TEXT) 

Ich Environment.NewLine, ich < ersetzen,> \ t und "" mit "" (weiß nicht, anderen besseren Weg, es zu formatieren)

Wenn ich versuche, es über mailaddress Klasse zu senden, erhalte ich einen Formatfehler. aber funktioniert gut, wenn die Anzahl der E-Mails weniger sind.

Gelöst:

  string to = ""; 
      string cc = ""; 
      int i = 0; 
      foreach (string item in multiAddress.Split(',')) 
      { 
       i += 1; 
       if (i < 10) 
       { 
        to += item + ","; 
       } 
       else 
       { 
        cc += item + ","; 
       } 
      } 
      to = to.Remove(to.Length - 1); 
      cc = cc.Remove(cc.Length - 1); 
+0

Warum die Tabs und Zeilenumbrüche? –

+0

Bitte fügen Sie zu Ihrer Frage den Code zum Senden von E-Mails an diese Liste von E-Mail-Adressen – Steve

+0

Ich bekomme diese E-Mail-Adressen von einem anderen Server. So kommt es zu meiner Software. – QANew

Antwort

3

Warum können Sie nicht die reguläre Art und Weise nutzen E-Mail an mehrere Adressen zu senden?

string recipients="[email protected],[email protected],[email protected]" etc.. 

ich persönlich einen Fehler bekam, wenn ich auf mehr als 9 Empfänger zu senden versucht, so habe ich den folgenden Code-Snippet, das nach dem 9. Empfänger bewegt er sich automatisch um die Empfänger: in einen String, durch Kommas wie diese separeted zum CC-Feld.

 var emailAddresses= "YourEmailAddresses"; 

     //conccatenat all the email addresses into one variable 
     //if there is more than 9 recipients it moves them to the CC field 
     string to=""; 
     string cc = ""; 
     int i = 0; 
     foreach (string item in emailAddresses) { 
      i += 1; 
      if (i < 10) { 
       to += item + ","; 
      } 
      else 
      { 
       cc += item + ","; 
      } 
     to = to.Remove(to.Length - 1); 

Wenn Sie die Schleife verwenden, stellen Sie sicher, das letzte Komma auf der Saite zu entfernen (weil es ein Komma nach jedem Eintrag hinzufügt, so dass Sie einen weiteren nach der letzten E-Mail haben wird).

+0

Wie ist es eine Antwort auf die Frage? –

+0

@ un-Glück Ich bin mir nicht sicher, was du meinst. – user3378165

+2

Könnten Sie bitte Ihre Antwort erklären? –

0

können Sie reguläre Ausdrücke verwenden, um E-Mail-Adressen von anderen Zeichen Zum Beispiel zu isolieren:

(<)(\[email protected]\w+\.\w+)(>) 

wird jede E-Mail-Adresse zwischen den Winkeln übereinstimmen.

 string source = "(<[email protected]>; <[email protected]>; <[email protected]>, <[email protected]>; <[email protected]>; \r\n\t<[email protected]>, <[email protected]>; <[email protected]>\r\nTEXT)"; 
     Regex regx = new Regex(@"(<)(\[email protected]\w+\.\w+)(>)"); 

     MatchCollection matches = regx.Matches(source); 
     foreach (Match match in matches) { 
      Console.WriteLine(match.Groups[2].Value); 
     } 

Hier sind Sie ein running example.

+0

was meinst du mit 'warum neue Linie? ' (auch, wenn Sie denken, die Antwort ist hilfreich, bitte, upvote) – mnieto

0

können Sie schreiben auch einen Code, um die cc Mail zu erhalten, wie mit regulären C# -Code folgt

public static string[] GetCCEmails() 
    { 
     const int limitToIncludeCC = 10 ;// no of email to be skipped 
     string[] emailAdresses = new string[] { "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]" }; 
     var ccmailIDs = emailAdresses.Skip(limitToIncludeCC); 
     return ccmailIDs.ToArray(); 
    } 

Methode überspringen und dieses Array CC Eigentum der Mailmessage Klasse von System.Net.Mail zuweisen.