我正在通过c#向Thunderbird发送电子邮件给很多人。我用循环来做。我的问题是,当我运行我的应用程序时 - 对于任何发送新Thunderbird窗口的电子邮件都是打开的,然后我需要按“发送”然后发送。这非常不方便。如何一次发送所有电子邮件?
我的代码:
string strCommand;
for(i=0;i<100;i++)
{
strCommand = " -compose to=" + (char)34 + astrRecip[i] + (char)34 + ",";
strCommand += "body=" + (char)34 + strMessage[i] + (char)34 + ",";
strCommand += "subject=" + (char)34 + strSubject + (char)34 + ",";
strCommand += "attachment=" + (char)34 + strAttachment[i] + (char)34;
Process.Start(@"C:\Program Files\Mozilla Thunderbird\thunderbird", strCommand);
}
我认为,因为我为每封电子邮件写了“-compose”,所以它打开了一个新窗口,也许如果我写一个命令行就可以了。我试过了,但没有成功。
答案 0 :(得分:6)
你真的应该使用.NET框架中的SmtpClient
类。
答案 1 :(得分:2)
您可以在一个撰写参数中使用多个电子邮件地址,如Command line arguments - Thunderbird中所示。
因此,不是在每个循环中启动进程,而是加入所有电子邮件地址并在之后启动一个进程。使用string.Join很简单。
string strCommand;
strCommand = " -compose to=" + (char)34 + string.Join(",", astrRecip) + (char)34 + ",";
strCommand += "body=" + (char)34 + strMessage[i] + (char)34 + ",";
strCommand += "subject=" + (char)34 + strSubject + (char)34 + ",";
strCommand += "attachment=" + (char)34 + strAttachment[i] + (char)34;
Process.Start(@"C:\Program Files\Mozilla Thunderbird\thunderbird", strCommand);
编辑:请注意,您可以转义“如果您想要使用\”。因此,您可以输入
而不是(char)34
strCommand = " -compose to=\"" + string.Join(",", astrRecip) + "\",";
并且,通过使用字符串格式,这可以更容易阅读。
strCommand = string.Format("-compose to=\"{0}\",", string.Join(",", astrRecip));
因为你从它的参数中分离出字符串。