C#文件迭代问题

时间:2014-01-22 08:51:58

标签: c# .net mailmessage

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和第1行3等等。它不应该像它应该的那样:读取行>发送电子邮件到第1行>发送电子邮件到第2行。

我做错了什么?

3 个答案:

答案 0 :(得分:2)

问题在于这一行:

mailMessage.To.Add(line);

每次迭代,您都会在邮件中添加一个电子邮件地址,这会导致您的问题。

尝试类似:

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

或在每次迭代中初始化一个新的mailMessage对象。

答案 1 :(得分:0)

我认为你应该在循环中使用new初始化mailMessage。

答案 2 :(得分:0)

你的问题在于:

mailMessage.To.Add(line);

您正在为邮件添加新收件人,但不会删除之前迭代中的旧收件人。

假设您使用的是System.Net.Mail.MailMessageToMailAddressCollection类型,因此您应该可以使用以下方式清除旧条目:

mailMessage.To.Clear();