这是我用来从具有扩展名的文件夹中获取所有名称的代码

string[] files = Directory.GetFiles(@"D:\DLogs\Notification11");
foreach (string file in files)
{

    //Console.WriteLine(Path.GetFileName(file));
    listOfFiles.Add(Path.GetFileName(file));
    mailBeeTask(listOfFiles);
}


现在的问题是在mailBeeTask(listOfFiles)中,我给文件名加上扩展名,但是mailbee使用

mailer.Message.LoadMessage(@"D:\DLogs\Notification11\mailbee.eml");


这是mailbee代码

public static void mailBeeTask(IList<string> ListOfTasks)
{
    //send emails
    Smtp mailer = new Smtp();

    // Use SMTP relay server with authentication.
    mailer.SmtpServers.Add("smtp.domain.com", "[email protected]",
    "secret");

    // Load the message from .EML file (it must be in MIME RFC2822
    format).
    mailer.Message.LoadMessage(@"D:\DLogs\Notification11\mailbee.eml");
    **//this above line is the problem, how can i use ListOfTasks
    instead
    //of mailbee.eml should i concatenate or what??**

    // Demonstrate that we can modify the loaded message.
    // Update the date when the message was composed to the current
    moment.
    mailer.Message.Date = DateTime.Now;

    mailer.Send();
}


Mailbee用于发送afterlogic发出的电子邮件。

最佳答案

按照逻辑,您要在给定目录中发送所有消息文件。由于单个文件本身就是一条完整的消息,因此您必须分别发送每个文件/消息。

您正确获取所有文件。但是随后您必须为每个文件执行mailBeeTask

因此,每行中的两行将

mailBeeTask(file);


并且mailBeeTask的签名必须更改为

public static void mailBeeTask(string filename)


然后在最后一次更改中使用参数

mailer.Message.LoadMessage(filename);


现在,您的代码将遍历指定目录中的所有文件,然后将使用完整文件名作为参数调用mailBeeTask方法。然后,该方法将加载单个文件,修改日期并将其发送。

在OP中使用给定的代码,您还将遭受以下困扰:首先将文件添加到listOfFiles,然后对列表中的每个文件执行mailBeeTask。在下一次迭代中,这将导致再次将列表中的所有先前文件作为参数提供。使用已经工作的代码,您将在一次迭代中发送所有先前的文件和当前文件。

10-08 04:57