Как подавить проверку электронной почты при использовании SmtpClient и MailMessage - PullRequest
4 голосов
/ 09 июня 2010

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

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

Ответы [ 2 ]

2 голосов
/ 09 июня 2010

Это может быть ошибкой после попытки отправки электронного письма.

Можете ли вы предоставить CallStack, чтобы мы могли видеть, где именно генерируется исключение


Обновление: в соответствии сдизассемблировать код от рефлектора. Эту проблему можно продать только путем обновления до VS2010 и .NET 4.0

. Более низкие версии сборки System.Net не могут решить эту проблему

2 голосов
/ 09 июня 2010

Edit: попробовал пример кода в VB2005, и я также получил исключение. Приведенный ниже код отлично работает в VB2010 Express, хотя, похоже, это ошибка, которая сейчас исправлена. Цитата MSDN взята из документации 4.0, этого фрагмента нет в более ранних версиях страницы MSDN.

Я не могу попробовать прямо сейчас, но как именно отформатированы ваши адреса электронной почты? В документации для класса MailAddress указано, что он поддерживает последовательные и конечные точки в именах пользователей. Например, user ... name .. @ host. (цитата скопирована с здесь ).

Редактировать: добавлен образец.

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
...