[英]System.Net.Mail.SmtpException: The address has an invalid host name
我已经尝试了almast的所有操作,但是在所有信息正确的情况下,它会一直向我发送此消息(我认为是正确的)。
这是错误:
System.Net.Mail.SmtpException:该地址的主机名无效:yakovmora1@gmail.com。 System.ArgumentException:在索引9处找到无效的Unicode代码点。参数名称:System.Text.Normalization.Normalize(字符串strInput,NormalizationForm normForm)处的strInput
我在ASPX.CS中的代码是:
protected void Sbutton_Click(object sender, EventArgs e)
{
string Name = Request.Form["Name"];
string email = Request.Form["email"];
string message = Request.Form["Message"];
if (CheckFields(Name, email, message, ref Label1) == true)
{
try
{
MailMessage myEmail = new MailMessage()
{
Subject = "Message from website user: [" + Name + "]",
Body = "Email: " + email + Environment.NewLine + Environment.NewLine + message,
IsBodyHtml = false,
From = new MailAddress(email, Name),
};
myEmail.To.Add(new MailAddress("yakovmora1@gmail.com", "IsraeCoreLx"));
SmtpClient server = new SmtpClient();
server.Send(myEmail);
Label1.Text = "Message Sent";
}
catch (Exception ex)
{
Label1.Text = "error sending message <br/><br/>" + ex.ToString();
}
if (Label1.Text != "Message Sent")
{
Label1.Text = "trying again";
#region trying again
try
{
MailMessage myEmail = new MailMessage()
{
Subject = "Message from website user: [" + Name + "]",
Body = "Email: " + email + Environment.NewLine + Environment.NewLine + message,
IsBodyHtml = false,
From = new MailAddress(email, Name)
};
myEmail.To.Add(new MailAddress("yakovmora1@gmail.com", "IsraeCoreLx"));
SmtpClient server = new SmtpClient();
server.Port = 25;
server.Send(myEmail);
Label1.Text = "Message Sent";
}
catch (Exception ex)
{
Label1.Text = "error sending message <br/><br/>" + ex.ToString();
}
#endregion
}
if (Label1.Text == "Message Sent")
{
CleanFields( Name, email, message ,ref Label1);
}
}
}
private void CleanFields(string Name, string email, string message, ref Label Label1)
{
Request.Form["Name"] = "";
Request.Form["email"] = "";
Request.Form["message"] = "";
}
private Boolean CheckFields(string Name, string email, string message, ref Label Label1)
{
if (Name != "")
{
if (IsEmailValid(email) == true)
{
if (message != "")
return true;
else
Label1.Text = "Your message is empty.";
}
else
{
Label1.Text = "Your email is invalid.";
}
}
else
{
Label1.Text = "Please fill in your Name.";
}
return false;
}
private Boolean IsEmailValid(string EmailAddr)
{
if (EmailAddr != null || EmailAddr != "")
{
Regex n = new Regex("(?<user>[^@]+)@(?<host>.+)");
Match v = n.Match(EmailAddr);
if (!v.Success || EmailAddr.Length != v.Length)
return false;
else
return true;
}
else
return false;
}
该错误是不言自明的:
System.Net.Mail.SmtpException:
The address has an invalid host name: yakovmora1@gmail.com.
System.ArgumentException: Invalid Unicode code point found at index 9.
Parameter name: strInput
at System.Text.Normalization.Normalize(String strInput, NormalizationForm normForm)
看一下这个字符串: yakovmora1@gmail.com
第9个字符是1
,对我来说似乎很好,但是我看到您将其直接嵌入到源代码中(一个很糟糕的主意,但是没关系)。 您是否使用正确的编码保存*.cs
文件? 确保使用UTF-8或UTF-16(Visual Studio> 文件 > 高级保存选项 > 编码 )。
在发送电子邮件之前,您可能会在调试器中查看邮件消息的值,或者调用“ ToString”方法。 在这种情况下,在.NET 3.5或更早版本下,存在一个错误,该错误会更改邮件对象中的字段值,从而导致以后出现此故障。
我也遇到了类似的错误,并已解决。 您可以在此处查看详细信息: MailMessage“发件人”属性分配间接导致异常
希望对您有所帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.