C#のバッチにてプログラム内で一時ファイルを作成し、メールに添付して送信後に削除するといった処理を書いた際にたまに「別のプロセスで使用されているため、、、」と例外が発生する場合がありました。

いや、、このプログラムでしか使ってないけど、、と思っていたのですが、MailMessageクラスの参照が開放されていませんでした。

SmtpClientは開放していたのですが、MailMessageをDispose()メソッドで解放しなければ添付ファイルの参照が開放されないみたいです。
確かに、添付ファイルはAttachmentクラスをMailMessageにセットしているのでメール送信後にSmtpClientを開放するだけでは添付ファイルを参照したままか、、、あほか、、と思いました。

usingを使うなりDispose()で開放する癖をつけないといけませんね。