C# C“SmtpServer”;“操作已超时”;
在C#winform应用程序中,我无法通过smtp和gmail发送邮件。 无附件发送成功,但添加附件后,应用程序被抛出System.Net.Mail.SmtpException,其消息为“操作已超时” 怎么了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;
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?我不能说。两者都是客户端应用程序。无论如何,谢谢!