C#SmtpServer“操作已经超时”

问题描述 投票:0回答:1

我在使用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
        ([email protected], "password"  );


        System.Net.Mail.MailAddress from = new System.Net.Mail.MailAddress([email protected],
            from,
            System.Text.Encoding.UTF8);

        System.Net.Mail.MailAddress to = new System.Net.Mail.MailAddress("[email protected]");



        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([email protected]);



        message.Attachments.Add(att);

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

编辑

我有这个问题的Gmail和雅虎!

c# winforms smtpclient
1个回答
0
投票

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

  1. 尽可能地增加你的超时,如果你正在处理非常大的附件,这就可以解决你的问题:smtpClient.Timeout = Int32.MaxValue;
  2. 尝试使用不同的服务器端口。也许你有其他应用程序(例如Outlook)使用端口25进行通信,这会产生冲突。切换到465。如果它不起作用,请尝试使用587
  3. 尝试使用其他帐户进行测试。
© www.soinside.com 2019 - 2024. All rights reserved.