0

我已经尝试了一切,但它一直在给我这个信息,而所有信息都是正确的(我认为是这样)。

这是错误:

System.Net.Mail.SmtpException:地址的主机名无效:yakovmora1@gmail.com‏。System.ArgumentException:在索引 9 处找到无效的 Unicode 代码点。参数名称:System.Text.Normalization.Normalize 处的 strInput(String strInput,NormalizationForm normForm)

我在 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;
    }
4

2 回答 2

1

该错误是不言自明的:

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 > File> Advanced Save Options> Encoding)。

于 2013-04-14T19:11:03.033 回答
0

在发送电子邮件之前,您可能会在调试器中查看邮件消息值,或者调用“ToString”方法。在这种情况下,在 .NET 3.5 或更早版本下,有一个错误会更改邮件消息对象中的字段值,从而导致稍后出现此故障。

我也遇到了类似的bug,解决了。您可以在此处查看详细信息: MailMessage "From" 属性分配间接导致异常

希望这会对您有所帮助!

于 2013-09-30T14:30:50.047 回答