Что может вызвать «Указанная строка не в форме, необходимой для адреса электронной почты»? - PullRequest
7 голосов
/ 21 января 2011

Что может вызвать ошибку «Указанная строка не в форме, необходимой для адреса электронной почты»?

Строка исходного кода, которая вызывает ошибку:

msg.To.Add(new MailAddress("txtEmail.Text"));

Ответы [ 8 ]

15 голосов
/ 21 января 2011
msg.To.Add(new MailAddress("txtEmail.Text"));

это проблема. txtEmail.Text не является адресом электронной почты. Если это текстовый файл, представляющий собой список электронных писем, вам нужно открыть его, прочитать и передать их по одному.

Если это относится к текстовому полю, уберите кавычки вокруг него. Как это:

msg.To.Add(new MailAddress(txtEmail.Text));
12 голосов
/ 20 января 2012

Для меня проблема заключалась в использовании точки с запятой (;) для разделения нескольких электронных писем.Как только я изменяю это на запятую (,), это работает.Надеюсь, это кому-нибудь поможет.

4 голосов
/ 08 ноября 2012

Возможно, проблема с кодом выше произошла из-за

msg.To.Add(new MailAddress("txtEmail.Text"));

Возможно, вам ясно, что здесь «txtEmail.Text» отображается в виде строки, а не почтового адреса, на который должна быть отправлена ​​почта. Поэтому код должен быть заменен на

msg.To.Add(new MailAddress(txtEmail.Text));

и иногда ошибка типа " Указанная строка не в форме, требуемой для адреса электронной почты ", может также возникать из-за использования неправильной строки. Как я даже сталкивался.

В основном я работал над задачей отправки электронной почты с использованием ASP.Net. Главной проблемой для меня была отправка почты нескольким пользователям . Во-первых, я извлек адрес электронной почты из базы данных и used ";", чтобы отделить несколько адресов электронной почты . Потому что при отправке электронной почты нескольким пользователям на регулярной основе мы используем точку с запятой, т. Е. ";"

Все выглядело нормально, но после компиляции я получил ошибку "Указанная строка не соответствует форме, необходимой для адреса электронной почты".

После небольшого анализа я узнал, что вместо использования «;» мы должны использовать «», чтобы разделять несколько адресов электронной почты при отправке писем. Это форматированная строка для разделения писем.

Для деталей посетите: http://kopila.com.np

Спасибо!

1 голос
/ 21 января 2011

Хм, позвольте мне увидеть, возможно ли, что "txtEmail.Text" не является действительным адресом электронной почты? Я просто догадываюсь здесь, но вы можете удалить кавычки, чтобы получить фактическое значение в вашем контроле ...

0 голосов
/ 12 марта 2019

Угадайте, в чем проблема для нас?

Трейлинг-пробелы.По какой-то причине, когда вы используете многострочное текстовое поле, в начале строки добавляются пробелы.

Когда мы использовали Trim для строки, все работало нормально.

0 голосов
/ 14 августа 2013

Должен быть в следующем формате.

Dim myMail As New Net.Mail.MailMessage(New MailAddress(strFrom), New MailAddress(strTo))
0 голосов
/ 22 ноября 2012

У меня была проблема, когда я создавал сообщение с получателем, а отправитель уже в нем, но он вернул следующую ошибку:

The specified string is not in the form required for an e-mail address

Проблемный код былследующим образом:

MailMessage objMsg = new MailMessage(regEmail.Text.ToString(), "me@mysite.com");

Я исправил проблему, заменив этот код следующим:

MailMessage objMsg = new MailMessage();
objMsg.From = new MailAddress(regEmail.Text.ToString());
objMsg.To.Add(new MailAddress("me@mysite.com"));

Также полезно использовать средство проверки правильности регулярных выражений в пользовательском элементе управления, чтобы убедиться, что адресдопустимо, вы можете использовать следующий код для asp:

<asp:RegularExpressionValidator ID="regex1" ControlToValidate="regEmail" ErrorMessage="Please enter a valid email address" ValidationExpression="^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$" ValidationGroup="regGroup" runat="server" Display="None" SetFocusOnError="True"></asp:RegularExpressionValidator>

Или, если вы предпочитаете проверять электронную почту в C #, вы можете использовать это, как это было сказано S Fadhel Ali:

public static bool IsValidEmail(String Email)
{
    if( Email != null && Email != "" )
        return Regex.IsMatch(Email, @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" );
    else
        return false;
}
0 голосов
/ 21 января 2011

адрес отправителя и получателя должен быть действительным форматом адреса электронной почты. например. user@domain.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...