我在使用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和雅虎!
我没有看到你的代码中有任何重大缺陷,我认为GMail
不久前将附件大小限制提高到50Mb
...无论如何,我建议你继续进行以下修改:
smtpClient.Timeout = Int32.MaxValue;
。Outlook
)使用端口25
进行通信,这会产生冲突。切换到465
。如果它不起作用,请尝试使用587
。