c# – 使用SmtpClient时“操作超时”

我正在尝试使用C#框架创建一个小应用程序来发送电子邮件.但是,它不起作用.该应用程序总是给我“操作超时”.我不是为什么.

这是我的代码

private void button1_Click(object sender,EventArgs e)
   {
     MailAddress fromAddress = new MailAddress("from@gmail.com");
     MailAddress toAddress = new MailAddress("to@gmail.com");

     MailMessage mail = new MailMessage(fromAddress.Address,toAddress.Address);
     mail.Subject = "Testing";
     mail.Body = "contents.";

     SmtpClient client = new SmtpClient();
     client.Host = "smtp.gmail.com";
     client.Port = 587;
     client.EnableSsl = true;
     client.Timeout = 100;
     client.UseDefaultCredentials = false;
     client.Credentials = new NetworkCredential("username","password");

     try
        {
            client.Send(mail);
            MessageBox.Show("Mail Sent!","Success",MessageBoxButtons.OK);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message,"Error",MessageBoxButtons.OK);
        }

    }

谢谢!

解决方法

尝试设置更高的超时限制.它是以毫秒为单位.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Mail;
using System.Net;

namespace GmailSendTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender,EventArgs e)
        {
            MailAddress fromAddress = new MailAddress("myusername@gmail.com");
            MailAddress toAddress = new MailAddress("myusername@gmail.com");

            MailMessage mail = new MailMessage(fromAddress.Address,toAddress.Address);
            mail.Subject = "Testing";
            mail.Body = "contents.";

            SmtpClient client = new SmtpClient();
            client.Host = "smtp.gmail.com";
            client.Port = 587;
            client.EnableSsl = true;
            client.Timeout = 10000;
            client.UseDefaultCredentials = false;
            client.Credentials = new NetworkCredential("myusername","mypassword"); 

            try
            {
                client.Send(mail);
                MessageBox.Show("Mail Sent!",MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message,MessageBoxButtons.OK);
            }
        }
    }
}

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...