【问题标题】:An unhandled exception of type 'System.Net.Mail.SmtpException' occurred in System.dllSystem.dll 中出现“System.Net.Mail.SmtpException”类型的未处理异常
【发布时间】:2014-10-23 17:55:06
【问题描述】:

我正在尝试关于如何通过.NETC# 发送电子邮件的非常简单的教程。但是,当我尝试执行代码时,出现以下异常:

System.dll 中出现“System.Net.Mail.SmtpException”类型的未处理异常附加信息:操作已计时 出来。

所以我所做的是找到我想向其发送邮件的服务器设置。这在我的国家很受欢迎:

Incoming settings

Protocol -> POP
Email address -> username@abv.bg
Username -> username@abv.bg
Password -> password
POP server -> pop3.abv.bg
Security type -> SSL
Server port -> 995

Outgoing server settings

Username -> username@abv.bg
Password -> password
SMTP server -> smtp.abv.bg
Security type -> SSL
Server port -> 465

然后我创建了一个Console project,在我的主要方法中我有这个代码:

        SmtpClient client = new SmtpClient("smtp.abv.bg");
        client.Port = 465;
        client.EnableSsl = true;
        client.Timeout = 100000;
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        client.UseDefaultCredentials = false;
        client.Credentials = new NetworkCredential(
         "username@abv.bg", "password");

        MailMessage msg = new MailMessage();
        msg.To.Add("username@abv.bg");
        msg.From = new MailAddress("username@abv.bg");
        msg.Subject = "Test subject";
        msg.Body = "Test test test...";
        client.Send(msg);

因为我没有这方面的经验,所以我只是尝试你看到的代码。任何地方都没有额外的设置。我认为唯一不应该是问题,但我认为值得一提的是:

         client.Credentials = new NetworkCredential(
         "username@abv.bg", "password");

这里:

         msg.To.Add("username@abv.bg");

我正在使用相同的电子邮件。但我认为这应该不是问题。知道我在这里做错了什么吗?

【问题讨论】:

    标签: c# .net email


    【解决方案1】:

    这是我多年前编写的用于测试的工作示例(使用 Gmail)。

    public  void sendEmail(string body)
            {
                if (String.IsNullOrEmpty(email))
                    return;
                try
                {
                    MailMessage mail = new MailMessage();
                    mail.To.Add(email);
                    mail.To.Add("xxx@gmail.com");
                    mail.From = new MailAddress("yyy@gmail.com");
                    mail.Subject = "sub";
    
                    mail.Body = body;
    
                    mail.IsBodyHtml = true;
                    SmtpClient smtp = new SmtpClient();
                    smtp.Host = "smtp.gmail.com"; //Or Your SMTP Server Address
                    smtp.Credentials = new System.Net.NetworkCredential
                         ("yyy@gmail.com", "pw"); // ***use valid credentials***
                    smtp.Port = 587;
    
                    //Or your Smtp Email ID and Password
                    smtp.EnableSsl = true;
                    smtp.Send(mail);
                }
                catch (Exception ex)
                {
                    print("Exception in sendEmail:" + ex.Message);
                }
            }
    

    我会尝试在 Gmail 中使用此功能,以消除防火墙等网络相关问题。当这可行时,剩下的就是为 SMPT 服务器找到正确的设置

    【讨论】:

    • 事实上,我的第一次尝试是使用 gmail,但即使使用您的代码,我也会收到此错误 - The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. 我已经阅读了一些关于它的内容,似乎我必须明确允许接收来自或的邮件别的东西。。我忘了。但我认为 Gmail 是个例外,所以我尝试了不同的电子邮件客户端。
    • 您是否将 pw 更改为您的实际密码 @Leron?
    • 是的,我正在使用我的真实密码。我知道这里的密码只是替代品。在谷歌安全中,我收到Unusual Activity 的消息,它说有人试图注册(我在尝试代码)并且这个人知道我的密码,所以是的 - 这是真实的。
    • 是的。您需要启用它:support.google.com/accounts/answer/1144110?hl=en
    • 在您的收件箱中查找该电子邮件:“Google 帐户:登录尝试被阻止”。
    猜你喜欢
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    相关资源
    最近更新 更多