SmtpClient - 操作已超时

时间:2014-06-30 07:34:34

标签: c# smtp

我正在尝试使用C#创建一个小应用程序来发送电子邮件,但即使使用端口587(GMail)TLS或465(GMail SSL),我也无法使其工作。我不确定是什么原因导致我的问题,我应该编辑我的app.config文件吗?这是我的代码:

try
{
  SmtpClient client = new SmtpClient("smtp.gmail.com", 465);
  client.EnableSsl = true;
  client.Timeout = 10000;
  client.DeliveryMethod = SmtpDeliveryMethod.Network;
  client.UseDefaultCredentials = false;
  client.Credentials = new NetworkCredential("myemailid", "mypwd");

  MailMessage msg = new MailMessage();
  msg.To.Add(txtTo.Text);
  msg.From = new MailAddress("myemailid");
  msg.Subject = txtSub.Text;
  msg.Body = txtMsg.Text;

  client.Send(msg);
  MessageBox.Show("sent");
}
catch (Exception ex) 
{
    MessageBox.Show(ex.Message);
}

4 个答案:

答案 0 :(得分:3)

如果您收到超时异常,则表示SmtpClient无法连接到SMTP服务器,或者在发送过程中某些时候连接丢失。

这可能是由于您端的防火墙阻塞了与服务器的传出连接或阻止端口465上的传出连接。

答案 1 :(得分:3)

端口25和465引起了问题。将端口更改为587对我有用。

Dim myCredential As System.Net.NetworkCredential
myCredential = New System.Net.NetworkCredential("emailid", "pwd")
smtp.Host = "server"
smtp.Port = 587
smtp.EnableSsl = True
smtp.UseDefaultCredentials = False
smtp.Credentials = myCredential
smtp.Send(mm)

答案 2 :(得分:0)

我遇到了同样的问题,因为它是由管理员为我排序的

答案 3 :(得分:0)

  1. 在防火墙设置中允许端口 25、465、587。

  2. 我可以通过 System.Net.Mail.SmtpClient 或 MailKit.Net.Smtp.SmtpClient 发送邮件

    在某些邮件服务(例如 Image)中,System.Net.Mail.SmtpClient 根本不起作用。

以下是使用MailKit.Net.Smtp.SmtpClient的代码部分

a.out $(head -n $SLURM_ARRAY_TASK_ID parameter.txt | tail -1)

以下是使用 System.Net.Mail.SmtpClient 的代码部分

using MailKit.Security;
using MimeKit;
using MailKit.Net.Smtp;
using MimeKit.Text;
using System;
using System.Net.Mail;
...
// create email message
var email = new MimeMessage();
email.From.Add(MailboxAddress.Parse("notifiche@articolo75.it"));
//email.From.Add(MailboxAddress.Parse("yourmail@gmail.com"));// if you want to use gmail service, enable this line.
email.To.Add(MailboxAddress.Parse(destinatario));
email.Subject = oggetto;
email.Body = new TextPart(TextFormat.Html) { Text = "<h1>Example HTML Message Body</h1>" };
if (password.Length > 0)
{
    msg += "Password : " + password;
}

if (link.Length > 0)
    email.Body = new TextPart(TextFormat.Html) { Text = messaggio + "<a href=\"" + link + "\"" + ">Clicca qui</a>" + msg }; 
else
    email.Body = new TextPart(TextFormat.Html) { Text = messaggio }; 

// send email
var smtp = new MailKit.Net.Smtp.SmtpClient();
smtp.Connect("smtps.aruba.it", 465, SecureSocketOptions.SslOnConnect); 
smtp.Authenticate("notifiche@articolo75.it", "password");
//smtp.Connect("smtp.gmail.com", 587, SecureSocketOptions.StartTls);// if you want to use gmail service, enable this line.
//smtp.Authenticate("yourmail@gmail.com", "password");// if you want to use gmail service, enable this line.
smtp.Send(email);
smtp.Disconnect(true);