在电子邮件中发送用户忘记的密码在本地机器上成功,但在使用c#asp.net的服务器上失败
本文关键字:成功 失败 服务器 net c#asp 电子邮件 用户 密码 忘记 机器 | 更新日期: 2023-09-27 18:21:06
我正在使用C#在asp.net中开发一个小型应用程序,如果用户忘记了密码,我想在单击忘记密码按钮时将密码从数据库发送到用户的邮件中。我成功地在电子邮件中发送了密码,但在本地机器中。我在本地机器上使用的设置,我也在服务器上使用过。但如果我在服务器上尝试,我会遇到一个错误,上面写着"发送电子邮件失败"。有人能告诉我我在哪里犯了错误吗?如果必须在服务器上工作,该怎么办。
以下是我的代码:
try
{
if (ds.Tables[0].Rows.Count > 0)
{
MailMessage Msg = new MailMessage();
Msg.From = new MailAddress("mymail@gmail.com");
Msg.To.Add(new MailAddress(txtboxforgotemail.Text));
Msg.Subject = "Forgot Password :";
Msg.Body = "Hi, Dear '" + ds.Tables[0].Rows[0]["username"] + "' , your password is:" + ds.Tables[0].Rows[0]["password"] + "";
Msg.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.UseDefaultCredentials = false;
smtp.Port = 587;
smtp.Credentials = new System.Net.NetworkCredential ("mymail@gmail.com","mypassword");
smtp.Send(Msg);
lblforgotemail.Text = "Your Password Details Sent to your mail";
txtboxforgotemail.Text = "";
}
else
{
lblforgotemail.Text = "The email you entered does not exist.";
}
}
catch (Exception ex)
{
txtboxforgotemail.Text = "";
lblforgotemail.Text = ex.Message;
}
我在实时环境中使用了完全相同的东西,唯一的区别是我在smtp类上也设置了以下属性:
smtp.EnableSsl = true;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
几天前我也遇到了同样的问题。删除smtp。端口=587从您的代码,它将工作
try
{
string admin_email = "youremail"
string admin_emailpwd = "your pwd"
MailMessage mail = new MailMessage();
mail.To.Add(SendTo);
mail.From = new MailAddress(admin_email);
mail.Subject = Subject;
mail.Body = Body;
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "SMTP.gmail.com";
// smtp.Port = 587;
smtp.Credentials = new System.Net.NetworkCredential(admin_email, admin_emailpwd);
smtp.EnableSsl = true;
smtp.Send(mail);
}
catch
{
return false;
}
return true;
}
这是我的代码,它也能工作。(注意:我已经评论了smtp.port)