C#SmtpServer“操作已经超时”

时间:2017-12-17 01:43:58

标签: 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;
        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和yahoo都有这个问题!

1 个答案:

答案 0 :(得分:0)

我没有看到您的代码中存在任何重大缺陷,我认为GMail前一段时间将其附件大小限制提升为50Mb ...无论如何,我建议您继续进行以下修改:

  1. 尽可能增加您的超时时间,如果您处理的是非常大的附件,就可以解决您的问题:smtpClient.Timeout = Int32.MaxValue;

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

  3. 尝试使用其他帐户进行测试。