2016-06-21 3 views
2

Я пытаюсь отправить несколько писем (> 10) с использованием класса Mailaddress, но, по-видимому, ему это не нравится. Есть ли способ прикреплять электронные письма после 6-го до CC?cc (mail) после 6-ого адреса электронной почты

или любая другая работа вокруг?

у меня есть:

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

Я Environment.NewLine, заменяю <,>, \ т и "" с "" (не знаю, какой-либо другой лучший способ отформатировать его)

Когда я пытаюсь отправить его через класс mailaddress, я получаю ошибку формата. , но работает нормально, когда количество писем меньше.

Решен:

  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

Почему табуляции и разрывы? –

+0

Пожалуйста, добавьте к вашему вопросу код, используемый для отправки почты в этот список почтовых адресов – Steve

+0

Я получаю эти сообщения электронной почты с другого сервера. То, как он приходит к моему программному обеспечению. – QANew

ответ

3

Почему вы не можете использовать обычный способ отправить электронную почту к многократному адресу? в строку, separeted запятые, как это:

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

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

 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); 

Если вы используете петлю убедитесь, чтобы удалить последнюю запятую на строке (потому что он добавляет запятую после каждой записи, так что вы будете иметь один дополнительный после последней электронной почты).

+0

Как это ответить на вопрос? –

+0

@ un-lucky Я не уверен, что вы имеете в виду. – user3378165

+2

Не могли бы вы объяснить свой ответ? –

0

Вы можете использовать регулярные выражения для выделения адреса электронной почты от других символов Например:

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

будет соответствовать любой почте между углами.

 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); 
     } 

Здесь вы найдете running example.

+0

Что вы подразумеваете под 'why new line? ' (также, если вы чувствуете, что ответ полезен, пожалуйста, повысьте его) – mnieto

0

Вы также можете написать код, чтобы получить куб.см почту следующим образом с регулярным C# код с помощью пропуска методу

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(); 
    } 

и присвоить этот массив CC свойство MailMessage класса System.Net.Mail.

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