Хорошо, во-первых, как говорит mundeep, подключите обработчик событий перед вызовом SendAsync
.
Кроме того, не Dispose()
сообщение, где вы это делаете, потому что в этот момент оно, возможно, еще не было «отправлено» ... вы в основном потенциально портите сообщение, пока SmtpClient
пытается его обработать .
Теперь, что касается вашей реальной проблемы, у меня была та же проблема, и из памяти файл все еще удерживается SmtpClient
во время обратного вызова, поэтому вы действительно не можете удалить его. Я думаю, что прикрепление файла в файловой системе лучше всего использовать, только если это постоянный файл.
Если вы пытаетесь отправить временный файл, загрузите его в MemoryStream
и создайте из него Attachment
.
Мне просто кажется, что, возможно, вы можете решить проблему удаления вложений, сначала избавившись от объекта Attachment
в обработчике обратного вызова, прежде чем пытаться удалить файл ... хотя я бы очень тщательно протестировал, что не вызывает других побочных эффектов.