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行。
我做错了什么?
答案 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.MailMessage,To是MailAddressCollection类型,因此您应该可以使用以下方式清除旧条目:
mailMessage.To.Clear();