Ваша проблема в этой строке:
using (var msg = new MailMessage { From = new MailAddress(ConfigurationManager.AppSettings["EmailSender"], ConfigurationManager.AppSettings["EmailSenderName"]) })
Блок инициализатора { From = ... }
выполняется после создания объекта и до начала внутреннего try/finally
блока using
.
Если конструктор MailAddress
(или его аргументные выражения, или присвоение From
, если это средство доступа к свойству) генерирует исключение, MailMessage
не будет удален.
Измените на:
using (var msg = new MailMessage())
{
msg.From = new MailAddress(ConfigurationManager.AppSettings["EmailSender"], ConfigurationManager.AppSettings["EmailSenderName"]);
...
}
Временная переменная <>g_initLocal0
- это имя MailMessage до того, как оно будет присвоено msg
.