通过c#通过Thunderbird一次发送多封电子邮件

本文关键字:通过 电子邮件 一次 Thunderbird | 更新日期: 2025-05-08 15:31:54

我用c#给很多人发送电子邮件。我用循环来做。我的问题是,当我运行我的应用程序时,我发送的任何电子邮件都会打开一个新的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",所以它打开了一个新窗口,也许如果我写一个命令行就可以了。我试过了,但没有成功。

通过c#通过Thunderbird一次发送多封电子邮件

您确实应该使用.NET框架中的SmtpClient类。

您可以在一个compose参数中使用多个电子邮件地址,如命令行参数-Thunderbird中的示例所示。

因此,与其在每个循环中启动流程,不如加入所有电子邮件地址,然后启动一个流程。这是简单的使用字符串。参加

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

因为你把字符串从它的参数中分离出来。