什么原因会导致出现错误信息"The specified string is not in the form required for an e-mail address"?
引起错误的源代码行:
msg.To.Add(new MailAddress("txtEmail.Text"));
msg.To.Add(new MailAddress("txtEmail.Text"));
问题在于txtEmail.Text不是一个电子邮件地址。如果那是一个电子邮件列表的文本文件,您需要打开它并逐个读取并传递它们。
如果这是指文本框,请将引号去掉。像这样:
msg.To.Add(new MailAddress(txtEmail.Text));
对我而言,问题在于使用分号(;)来分隔多个电子邮件地址。 一旦我改用逗号(,),它就可以正常工作了。 希望这能帮到某些人。
msg.To.Add(new MailAddress("txtEmail.Text"));
您可能明白,在这里“txtEmail.Text”出现为字符串,而不是邮件发送的收件人地址。因此,代码应该被替换为
msg.To.Add(new MailAddress(txtEmail.Text));
发送方和接收方的地址都需要符合有效的电子邮件格式,例如user@domain.com。
嗯,让我看看,"txtEmail.Text" 可能不是一个有效的电子邮件地址吗?我只是猜测,但你可能想要从控件中删除引号以获取实际值...
猜猜我们的问题是什么?
尾随空格。由于某种原因,当您使用多行文本框时,字符串前面会添加空格。
当我们对该字符串使用Trim时,它可以正常工作。
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;
}
它应该是以下格式。
Dim myMail As New Net.Mail.MailMessage(New MailAddress(strFrom), New MailAddress(strTo))