質問
い機能頂けメッセージを送信するダウンになるかも知れませんが)として再現することができます。
基本的にループを通じてディレクトリ構造を作成したメールからファイルの構造例
c:\emails\message01
\attachments
c:\emails\message02
\attachments
の創出のメッセージから。ネスレッドセーフで、c#、標準のもの。
すべてのメッセージが作成され...私は別の機能が稼動しており、その後の製造元のメッセージフォルダを別の場所です。
問題はファイルをロック...
注意:私は移動しないファイルだけをコピーして作業が進められています。..
あらゆる提案にコピーする方法は以下のようになロックファイルを使用し、c#?
更新
私は簡単に追加することを可能に添付方法
private void AddAttachments(MailMessage mail)
{
string attachmentDirectoryPath = "c:\messages\message1";
DirectoryInfo attachmentDirectory = new DirectoryInfo(attachmentDirectoryPath);
FileInfo[] attachments = attachmentDirectory.GetFiles();
foreach (FileInfo attachment in attachments)
{
mail.Attachments.Add(new Attachment(attachment.FullName));
}
}
解決
こんにちは読書のファイルの作成、メールのメッセージ?このとき、読み取り、 FileShare
設定 FileShare.ReadWrite
...そしてすべきではないロックされています。をご利用の場合 FileStream
また、あなたがあなたを包み込むロジック using
キーワードのように資源が配置されます。
更新:
私は処分のメールメッセージが閉まり資源内でロック解除のファイル:
using (var mail = new MailMessage())
{
AddAttachments(mail);
}
// File copy code should work here
他のヒント
嫌いな答えを自分のポストのがんの悪い男の人がこの問題を修正:
後に送信するメッセージ
// Send the mail
client.Send(message);
//Clean up attachments
foreach (Attachment attachment in message.Attachments)
{
attachment.Dispose();
}
Disposeメールの添付ファイル...クリアロック、メッセージが送信するととして再現することができます。処分は削除しないでファイルは、クリアメールの添付ファイル:)
はい、ファイルを読み終えているのか。場合は開けて読んなに近くできたら、その必要ロックまでのプログラム終了して、自動的に閉じすべてのファイルです。
MailMessage email = new MailMessage();
email.From = txtFrom.Text;
email.To = txtToEmail.Text;
email.Subject = txtMSubject.Text;
email.Body = txtBody.Text;
SmtpClient mailClient = new SmtpClient();
mailClient.Host = "smtp.emailAddress";
mailClient.Port = 2525;
mailClient.Send(email );
email.Dispose();
// After Disposing the email object you can call file delete
if (filePath != "")
{
if (System.IO.File.Exists(filePath))
{
System.IO.File.Delete(filePath);
}
}
私はこの多くの送信時にアタッチメントを示します。私は、通常の使用には、次のようなもの:
のコードを移動するファイルマネジメントクライアントには以下のようなものを使いますパターン:
内側のループプのファイル
bool FileOk = false;
while (!FileOk)
{
try
{
// code to move the file
FileOk = true;
}
catch(Exception)
{
// do nothing or write some code to pause the thread for a few seconds.
}
}