用C#发送电子邮件不起作用

用C#发送电子邮件不起作用,c#,winforms,email,smtp,C#,Winforms,Email,Smtp,我正在写一个windows窗体,可以用C#发送消息 我曾经有过这样的功能,并在某一时刻发送消息,但现在当需要发送消息时,我的程序只是挂起 以下是发送消息的代码: private void sendEmail() { string host = ""; int port = 0; host = checkFromAddress(ref port); try { // Create t

我正在写一个windows窗体,可以用C#发送消息

我曾经有过这样的功能,并在某一时刻发送消息,但现在当需要发送消息时,我的程序只是挂起

以下是发送消息的代码:

private void sendEmail()
    {
        string host = "";
        int port = 0;

        host = checkFromAddress(ref port);

        try
        {
            // Create the email to send
            System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
            message.To.Add(recipient1.Text);
            message.Subject = "subject";
            message.From = new System.Net.Mail.MailAddress(userName.Text);
            message.Body = "Test Messge";

            // Setup smtp information related to the host used
            System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
            smtp.Host = host;
            smtp.Port = port;
            smtp.EnableSsl = true;
            smtp.Credentials = new System.Net.NetworkCredential(userName.Text, password.Text);

            // Send the message
            smtp.Send(message);
        }
        catch (Exception)
        {
            MessageBox.Show("Please check email settings and try again");
        }
    }
用户名和密码输入表单中,主机和端口根据用户的凭据确定

我调试程序,当它到达smtp.Send(message)时,它只是挂起,我无法打开表单。我必须停止调试或终止进程


知道它为什么不工作吗?

您是否验证了传入的所有值都有效?可能需要检查的是主机/端口。此外,“发件人”和“收件人”是否获得有效的电子邮件地址?这些看起来有点可疑。

您是否尝试让它超时?我知道MailAddress(userName.Text)中的构造函数要求变量是电子邮件地址而不是名称?除此之外,我建议减少组件的方法。设置一些您确定可以工作的字符串文本,然后反向工作。感谢您的建议,如果让它超时,我将看到会发生什么。我的错,这是我遇到的主机端口问题。我访问了多个站点以获取服务器信息,其中一个站点的端口号一定是错误的。我正在检查这些站点。我相信输入的地址可能是问题所在,超时导致我在其中输入了错误消息,因此存在一些设置问题