Как подавить проверку электронной почты при использовании SmtpClient и MailMessage
При отправке сообщений электронной почты с помощью SmtpClient и MailMessage (.net 3.5) адреса электронной почты" кому " проверяются перед отправкой. У меня есть большая стопка адресов электронной почты, которые имеют точку (.) перед знаком at, вызывая исключение FormatException при попытке отправить сообщение с помощью SmtpClient. Это на самом деле хорошо, потому что по спецификации точка перед знаком at недопустима. К сожалению, эти письма существуют в реальном мире, и они доставляются, если вы их отправляете использование предпочтительного почтового клиента.
Мой вопрос заключается в том, может ли проверка электронной почты через SmtpClient/MailMessage быть подавлена?
2 ответа:
Это может быть ошибка после попытки отправить электронное письмо.
Можете ли вы предоставить некоторый CallStack, чтобы мы могли видеть, где именно возникает исключение
Обновление: Согласно дизассемблированному коду от reflector, эта проблема может быть реализована только путем обновления до VS2010 и .NET 4.0
Нижние версии System.Net сборка не имеет способа решить эту проблему
Edit: попробовал пример кода в VB2005, и я также получил исключение. Приведенный ниже код прекрасно работает в Vb2010 Express, хотя, похоже, это ошибка, которая теперь исправлена. Цитата MSDN взята из документа 4.0, этот фрагмент отсутствует в более ранних версиях страницы MSDN.
Я не могу попробовать прямо сейчас, но как именно отформатированы ваши адреса электронной почты? Документация для класса
MailAddress
утверждает, что он поддерживает последовательные и конечные точки в именах пользователей. Например, user...name..@host. (цитата скопирована из здесь ).Edit: добавлен пример.
Try Dim smtpClient As New SmtpClient() smtpClient.Host = "mailserver" Dim fromAddress As New MailAddress("from@test.com") Dim toAddresses As New MailAddress("test.test.@test.com") Using message As New MailMessage() message.From = fromAddress message.To.Add(toAddresses) message.IsBodyHtml = False message.Subject = "test" smtpClient.Send(message) End Using TextBox1.Text = "OK" Catch ex As SmtpException TextBox1.Text = ex.ToString() End Try