我正在尝试编写代码以通过电子邮件发送忘记的密码,因此,当用户单击“忘记密码”按钮时,应该将密码发送到他们的电子邮件...但是会出现此错误>
“ /”应用程序中的服务器错误。 SMTP服务器要求安全 连接或客户端未通过身份验证。服务器响应 是:5.5.1需要身份验证。在说明中了解更多信息: 当前Web执行期间发生未处理的异常 请求。请查看堆栈跟踪以获取有关 错误及其在代码中的起源。
异常详细信息:System.Net.Mail.SmtpException:SMTP服务器 需要安全连接或客户端未通过身份验证。的 服务器响应为:5.5.1需要身份验证。了解更多信息
源错误:
第50行:smtp.Send(ms);
此处的源代码:
protected void Buttonpsw_Click(object sender, EventArgs e)
{
string mainconn = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString;
SqlConnection con = new SqlConnection(mainconn);
string sqlquery = "select Email,Password1 from [dbo].[Users1] where Email =@Email";
SqlCommand sqlcommand = new SqlCommand(sqlquery, con);
sqlcommand.Parameters.AddWithValue("@Email",Textemail.Text);
con.Open();
SqlDataReader sdr = sqlcommand.ExecuteReader();
if (sdr.Read())
{
string username = sdr["Email"].ToString();
string Password = sdr["Password1"].ToString();
MailMessage ms = new MailMessage("roqaia.alrfou@gmail.com",Textemail.Text);
ms.Subject = "Your password!";
ms.Body = string.Format("Hello : <h1>{0}</h1> is your Email ID <br/> Your Password is <h1>{1}</h1>",username,Password);
ms.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
NetworkCredential nc = new NetworkCredential();
nc.UserName = "roqaia.alrfou@gmail.com";
nc.Password = "133";
smtp.UseDefaultCredentials = true;
smtp.Credentials = nc;
smtp.Port = 587;
smtp.Send(ms);
Labelmsg.Text = "Your Password has been sent to" + Textemail.Text;
Labelmsg.ForeColor = Color.Green;
}
else
{
Labelmsg.Text = Textemail.Text+" This Email ID isn't Exist! Please sign up";
Labelmsg.ForeColor = Color.Red;
}
Web配置中的连接字符串具有以下代码:( Tracking_System是我的数据库名称)
<connectionStrings>
<add name="dbconnection"
connectionString="server= USER-PC\SQL;Data
Source=localhost;Initial Catalog=Tracking_System;
Integrated Security=True;Pooling=False
; Trusted_Connection=True;"
providerName="System.data.sqlclient" />
</connectionStrings>
我尝试在命令提示符下ping smtp,它给出了以下提示:
C:\ WINDOWS \ system32> ping smtp.google.com找不到Ping请求 托管smtp.google.com。请检查名称,然后重试。
C:\ WINDOWS \ system32> ping smtp.gmail.com
使用32个字节的字符对gmail-smtp-msa.l.google.com [64.233.184.108]执行Ping操作 数据:来自64.233.184.108的回复:字节= 32时间= 85ms TTL = 37来自 64.233.184.108:字节= 32时间= 91ms TTL = 37来自64.233.184.108的回复:字节= 32时间= 86ms TTL = 37来自64.233.184.108的回复:字节= 32 时间= 85ms TTL = 37
64.233.184.108的Ping统计信息: 数据包:已发送= 4,已接收= 4,丢失= 0(丢失0%),大约往返时间(以毫秒为单位): 最小值= 85毫秒,最大值= 91毫秒,平均值= 86毫秒
答案 0 :(得分:0)
当您尝试从其他时区或IP地址计算机登录时,通常会发生这种情况。生产服务器和您使用的邮件ID都在不同的时区。选择以下任一解决方案:
1)通过远程访问登录生产服务器,然后使用您的凭据登录gmail。他们将要求确认,确认并注销。
或者2)登录gmail,然后按照Link并选择review this activity并执行适当的操作。
找到了这个答案 1 :(得分:0)
问题是我的电子邮件的密码错误,nc.Password = "133";
我认为正确的密码来自数据库,而不是电子邮件的真实密码。
所以上面的代码是100%正确的。希望有人