Ответ 1
У почтового сообщения есть вложения → вложения - это потоки → Потоки должны быть удалены.
Вот декомпилированный метод Dispose MailMessage:
protected virtual void Dispose(bool disposing)
{
if (disposing && !this.disposed)
{
this.disposed = true;
if (this.views != null)
{
this.views.Dispose();
}
if (this.attachments != null)
{
this.attachments.Dispose();
}
if (this.bodyView != null)
{
this.bodyView.Dispose();
}
}
}
Как правило, класс должен реализовывать IDisposable, если какой-либо из его содержащихся в нем детей реализует его.