2010-06-09 3 views
4

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

Мой вопрос: можно ли проверять электронную почту через SmtpClient/MailMessage?

+2

Похоже, вы, возможно, потребуется обновить до 2010 года, отлично работает там, но я получаю исключение в 2005 году (не имеют доступа к 2008 году прямо сейчас). –

+0

Да, этот случай был исправлен в .NET 4. VS 2008 использует ту же System.dll, что и в 2005 году, и имеет такое же поведение. –

+0

У меня это с точкой net 4 и 2010 – Dani

ответ

2

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

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


Update: Согласно разборку кода от отражателя, эта проблема может быть продана только по обновлению до VS2010 и .NET 4.0

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

+0

Прошу прощения. Исключение возникает при попытке создать объект MailMessage с адресом электронной почты, например, например «test. @ Example.com». – Mats

+0

@ Matthias: Не могли бы вы разместить фактический код, который вы используете, как я уже сказал в своем ответе на комментарий Барри выше, я могу создать электронное письмо с адресом в этом формате. Я исправлю свой ответ, чтобы включить пример кода, который я использую. –

+0

@ ho1: Мой код более или менее идентичен вашему. Но я использую C#, как и Barry, и получаю исключение формата при создании объекта MailAddress с помощью «test.test. @ Test.com». – Mats

2

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

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

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

Try 
    Dim smtpClient As New SmtpClient() 
    smtpClient.Host = "mailserver" 
    Dim fromAddress As New MailAddress("[email protected]") 
    Dim toAddresses As New MailAddress("[email protected]") 
    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 
+0

Возможно, это документация, но я только что протестировал ее, и она не позволяет 'test.test. @ Test.com' – codingbadger

+0

@Barry: Мне теперь удалось попробовать и 'SmtpClient' не имеет проблем с адресом в этом формате для меня. Тем не менее, фактический SMTP-клиент отказывается от адреса и поэтому генерируется исключение, но это не имеет никакого отношения к 'SmtpClient', он просто передает ошибку. Вы уверены, что для вас это не одно и то же? –

+0

Я получаю ошибку FormatException при создании нового MailAddress. Я тестировал это в C# и VB (Visual Studio 2008) – codingbadger

Смежные вопросы