5

基本的にファイルを電子メールメッセージに添付する次のコードがあり、すべての添付ファイルが添付されて電子メールが送信された後、すべてのファイルを削除しようとしますが、使用中のファイルの例外が発生します。エラーはこの行にあると思います

Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);

このコードを使用してみましたが、送信できないという電子メール メッセージが表示されます

using Attachment data = new Attachment(file, MediaTypeNames.Application.Octet)){
//and the rest of the code in here.

}


foreach (KeyValuePair<string, string> kvp in reports) {
    browser.GoTo(kvp.Value);
    Thread.Sleep(1000);

    System.IO.File.Move(@"C:\Reports\bidata.csv", @"C:\Reports\"+kvp.Key.ToString()+".csv");

    string file = @"C:\Reports\" + kvp.Key.ToString() + ".csv";

    Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);

    // Add time stamp information for the file.
    ContentDisposition disposition = data.ContentDisposition;
    disposition.CreationDate = System.IO.File.GetCreationTime(file);
    disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
    disposition.ReadDate = System.IO.File.GetLastAccessTime(file);
    // Add the file attachment to this e-mail message.

    mail.Attachments.Add(data);  
}

smtpserver.Send(mail);
string[] files = Directory.GetFiles(@"C:\Reports");
foreach (string files1 in files)
{
    File.Delete(files1);
}
4

2 に答える 2

7

最初にファイルを削除するには、添付ファイルとメール オブジェクトを破棄してからファイルを削除する必要があります。

于 2012-10-25T18:57:20.103 に答える
2

usings に入れるか、dispose を直接呼び出して、smtpclient を破棄します。これにより、ファイル リソースが解放され、nuke できるようになります。

于 2012-10-25T18:55:38.093 に答える