Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#发送电子邮件操作超时_C#_Email - Fatal编程技术网

c#发送电子邮件操作超时

c#发送电子邮件操作超时,c#,email,C#,Email,这是我在表单中运行的代码。加载以执行测试电子邮件,但它不会运行,并表示操作超时。我什么都试过了请帮忙 MessageBox.Show(“已发送邮件”)为Smtp客户端使用“超时”属性。我认为0是最大值 MailMessage msg = new MailMessage("teunenrichard@gmail.com", "ipadcraze@hotmail.com", "Movies this month", "Hello this is a test mail"); msg.I

这是我在表单中运行的代码。加载以执行测试电子邮件,但它不会运行,并表示操作超时。我什么都试过了请帮忙
MessageBox.Show(“已发送邮件”)

为Smtp客户端使用“超时”属性。我认为0是最大值

MailMessage msg = new MailMessage("teunenrichard@gmail.com",        "ipadcraze@hotmail.com", "Movies this month", "Hello this is a test mail");
msg.IsBodyHtml = false;
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
smtp.UseDefaultCredentials = false;
NetworkCredential xre = new System.Net.NetworkCredential("teunenrichard@gmail.com", "Password");
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.Credentials = xre;
smtp.EnableSsl = true;
smtp.Send(msg);

为了更好地理解错误消息,请尝试将代码放入try-Catch块,然后在MessageBox.Show()中查看Catch的内部异常。它可能会为您提供有关错误的更多信息,并可能帮助/指导您朝着正确的方向解决问题。如下所示:-

 smtp.Timeout = 0;

您应该使用后台线程发送邮件,以确保UI线程不会阻塞并立即返回。你可以这样做

try
{
  //your email sending logic
}
catch(Exception ex)
{
  MessageBox.Show(ex.InnerException.ToString());
}
private async void sendButton\u单击(对象发送方,事件参数e)
{
var result=wait SendMail();
如果(结果)
{
MessageBox.Show(“已发送邮件”);
}
}
私有任务SendMail()
{
var task=task.Run(()=>
{
MailMessage msg=新的MailMessage(“sendermail@gmail.com", "recievermail@gmail.com“,“本月电影”,“你好,这是一封测试邮件”);
msg.IsBodyHtml=false;
使用(SmtpClient smtp=newsmtpclient(“smtp.gmail.com”,587))
{
smtp.UseDefaultCredentials=false;
NetworkCredential xre=新的NetworkCredential(“sendermail@gmail.com“,”密码“);
smtp.DeliveryMethod=SmtpDeliveryMethod.Network;
smtp.Credentials=xre;
smtp.EnableSsl=true;
smtp.Send(msg);
返回true;
}
});
返回任务;
}

gmail ssl的端口是465,而不是587。试着换一下。@Ross?我一直使用587。对不起,这是错误的副本message@john587用于TLS 465用于SSL,根据文档?确定的可能重复我尝试了此代码它成功运行,但我没有收到任何电子邮件您可以再试一次。我刚把“sendaync”改为“Send”,它就可以工作了
 private async void sendButton_Click(object sender, EventArgs e)
        {
            var result = await SendMail();
            if (result)
            {
                MessageBox.Show("Mail sent");
            }
        }

        private Task<bool> SendMail()
        {
            var task = Task.Run<bool>(() =>
            {
                MailMessage msg = new MailMessage("sendermail@gmail.com", "recievermail@gmail.com", "Movies this month", "Hello this is a test mail");
                msg.IsBodyHtml = false;

                using(SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))
                {
                    smtp.UseDefaultCredentials = false;
                    NetworkCredential xre = new NetworkCredential("sendermail@gmail.com", "Password");
                    smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                    smtp.Credentials = xre;
                    smtp.EnableSsl = true;
                    smtp.Send(msg);

                    return true;
                }

            });
            return task;
        }