C# C“SmtpServer”;“操作已超时”;

C# C“SmtpServer”;“操作已超时”;,c#,winforms,smtpclient,C#,Winforms,Smtpclient,在C#winform应用程序中,我无法通过smtp和gmail发送邮件。 无附件发送成功,但添加附件后,应用程序被抛出System.Net.Mail.SmtpException,其消息为“操作已超时” 怎么了 SmtpClient smtpClient = new SmtpClient(); Attachment att=new System.Net.Mail.Attachment("Path"); smtpClient.EnableSsl = true;

在C#winform应用程序中,我无法通过smtp和gmail发送邮件。 无附件发送成功,但添加附件后,应用程序被抛出System.Net.Mail.SmtpException,其消息为“操作已超时” 怎么了

SmtpClient smtpClient = new SmtpClient();
        Attachment att=new System.Net.Mail.Attachment("Path");
        smtpClient.EnableSsl = true;
        smtpClient.Port = 25;
        smtpClient.Timeout = 20000;
        smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
        smtpClient.UseDefaultCredentials = false;
        smtpClient.Host = "smtp.gmail.com";
        smtpClient.Credentials = new System.Net.NetworkCredential
        (from@gmail.com, "password"  );


        System.Net.Mail.MailAddress from = new System.Net.Mail.MailAddress(from@gmail.com,
            from,
            System.Text.Encoding.UTF8);

        System.Net.Mail.MailAddress to = new System.Net.Mail.MailAddress("to@gmail.com");



        MailMessage message = new MailMessage(from, to);
        message.Body = "some text";
        message.BodyEncoding = System.Text.Encoding.UTF8;
        message.Subject = "Subject";
        message.SubjectEncoding = System.Text.Encoding.UTF8;
        message.Bcc.Add(bcc@gmail.com);



        message.Attachments.Add(att);

        try
        {
            smtpClient.Send(message);
        }
        catch (System.Net.Mail.SmtpException ex)
        {
            MessageBox.Show(ex.Message); // The operation has timed out
        }
编辑


我有这个问题的gmail和雅虎

我没有发现您的代码中有任何重大缺陷,我认为
GMail
不久前将附件大小限制提高到了
50Mb
。。。无论如何,我建议您继续进行以下修改:

  • 尽可能增加超时时间,如果您处理的是非常大的附件,仅此一项就可以解决您的问题:
    smtpClient.timeout=Int32.MaxValue

  • 尝试使用不同的服务器端口。可能您有其他应用程序(
    Outlook
    )使用端口
    25
    进行通信,这会产生冲突。切换到
    465
    。如果不起作用,请尝试使用
    587

  • 尝试使用其他帐户进行测试


  • 附件太大,无法在给定的超时时间内上载。增加/禁用超时,或者选择一个较小的附件进行上传,直到它工作为止。@GentiSaliu我的附件文件是984kb,已禁用超时,但我再次收到该错误!您在没有附件的情况下进行了尝试?@Nevillenzerane是,邮件发送成功。SMTP服务器可能也有超时选项。尝试发送一个较小的附件,比如1KB。另外,请检查一段时间后是否有防火墙/防病毒软件阻止连接。您的第二种方法是我针对第三方邮件服务器的解决方案,将端口465更改为587解决了问题。奇怪的是,当使用CDO邮件对象时,端口465工作正常,没有任何问题。编辑:也许CDO也阻止了SMTP 465?我不能说。两者都是客户端应用程序。无论如何,谢谢!