Как подавить проверку электронной почты при использовании SmtpClient и MailMessage


При отправке сообщений электронной почты с помощью SmtpClient и MailMessage (.net 3.5) адреса электронной почты" кому " проверяются перед отправкой. У меня есть большая стопка адресов электронной почты, которые имеют точку (.) перед знаком at, вызывая исключение FormatException при попытке отправить сообщение с помощью SmtpClient. Это на самом деле хорошо, потому что по спецификации точка перед знаком at недопустима. К сожалению, эти письма существуют в реальном мире, и они доставляются, если вы их отправляете использование предпочтительного почтового клиента.

Мой вопрос заключается в том, может ли проверка электронной почты через SmtpClient/MailMessage быть подавлена?

2 4

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