2014-01-22 3 views
0
string line; 
int counter = 0; 

do 
{ 
    line = readFile.ReadLine(); 
    counter++; 

    var emailAddress = line; 

    if (line != null) 
    { 

     Console.WriteLine("Reading client email address..."); 
     mailMessage.From = new MailAddress("myEmailAddress"); 
     mailMessage.To.Add(line); 
     mailMessage.Subject = "TEST_SUBJECT"; 
     mailMessage.Body = "TEST_BODY"; 
     client.EnableSsl = true; 
     client.Send(mailMessage); 
     Console.WriteLine("Email sent to: " + line); 
    } 

} while (line != null); 

Проблемы, когда приложение отправляет сообщение, он перебирает снова корыто источника (файл, где хранятся электронные письма), и он идет, как:
прочитанной строки> Отправить письмо на линию 1> Читать строки> Отправить письмо по электронной почте на строку 1 & строка 2> Читать строки> Отправлять письма по строке 1, 2 & 3 и так далее. Это не похоже на то, что он должен: Читать строки> Отправить письмо на адрес 1> Отправить письмо по электронной почте на строку 2.C Итерация # Файла Выпуск

Что я делаю неправильно?

+0

Я не думаю, что код, который вы показали, сделает это. Пожалуйста, покажите краткую, но полную программу и образец входного файла. (Программе, конечно, не нужно отправлять электронные письма - просто напишите вывод консоли.) Обратите внимание, что использование цикла 'foreach' над' File.ReadLines' будет проще. –

+5

Кажется, вы делаете client.Send (mailMessage); каждый цикл, в то время как mailMessage.To.Add (строка); похоже, что он хранит весь список получателей. Попробуйте создать новое задание mailMessage при начале каждого цикла или списке рассылки получателей для быстрого исправления, чтобы узнать, работает ли он. – wondra

+0

http://prntscr.com/2li2bu Это результат, здесь он идет правильно. – m0nsterp1ece

ответ

0

Я думаю, что вы должны запустить mailMessage с новым в цикле.

0

Ваша проблема с линией:

mailMessage.To.Add(line); 

Вы добавляете новый получателя сообщения, но не избавившись от старых из предыдущих итераций.

Предполагая, что вы используете System.Net.Mail.MailMessage, To является MailAddressCollection типа, так что вы должны быть в состоянии очистить старые записи с помощью:

mailMessage.To.Clear(); 
+0

Как избавиться от старых записей из предыдущей итерации? – m0nsterp1ece

+0

Отредактированный мой ответ - см. Выше. – raveturned

2

Проблема заключается в строке:

mailMessage.To.Add(line); 

С каждой итерации , вы ADD anoter адрес электронной почты к сообщению, которое вызывает вашу проблему.

попробовать что-то вроде:

mailMessage.To.Clear(); 
mailMessage.To.Add(line); 

или инициализировать новый объект MailMessage в каждой итерации.

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