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;
}