gpt4 book ai didi

c# - 发送电子邮件时出错

转载 作者:行者123 更新时间:2023-11-30 18:08:14 25 4
gpt4 key购买 nike

当用户忘记密码时,我有一个找回用户密码的解决方案。我的代码写得很好,但错误出现在 SMTP 异常(发送错误)中。我该如何解决这个问题?

protected void Button1_Click(object sender, EventArgs e)
{
using (SqlConnection con = Connection.GetConnection())
{
string sql = "Select Password From Registeration Where UserName=@UserName And Email=@Email";
SqlCommand com = new SqlCommand(sql, con);
com.CommandType = CommandType.Text;

com.Parameters.Add("@UserName", SqlDbType.NVarChar, 50).Value = TxtUserName.Text;
com.Parameters.Add("@Email", SqlDbType.NVarChar, 50).Value = TxtEmail.Text;
SqlDataReader dr = com.ExecuteReader(CommandBehavior.SingleResult | CommandBehavior.CloseConnection);
while (dr.Read())
{
SendMail("karim-gamal@elarabygroup.com", "xxxx", TxtEmail.Text, " Hi", "Hi" + dr["Password"].ToString());
}
Response.Redirect("");
}
}


public static bool SendMail(string elarabyAccount, string password, string to, string subject, string message)
{
try
{
NetworkCredential loginInfo = new NetworkCredential(elarabyAccount, password);
MailMessage msg = new MailMessage();
msg.From = new MailAddress(elarabyAccount);
msg.To.Add(new MailAddress(to));
msg.Subject = subject;
msg.Body = message;
msg.IsBodyHtml = true;
SmtpClient client = new SmtpClient("smtp.elarabygroup.com", 8080);
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = loginInfo;
client.Send(msg);

return true;
}
catch (Exception)
{
return false;
}
}

最佳答案

documentation for SmtpClass陈述如下(强调我的):

The connection established by the current instance of the SmtpClient class to the SMTP server may be re-used if an application wishes to send multiple messages to the same SMTP server. This is particularly useful when authentication or encryption are used establish a connection to the SMTP server.

由于您正在使用加密 (client.EnableSsl = true;),您应该尝试使用单个 SmtpClient 实例来发送您的邮件。

此外,通过在每次调用 SendMail 时创建一个新的 SmtpClient 实例,您将创建一个到 SMTP 服务器的新连接;根据您拥有的记录数量,以及您要发送的电子邮件数量,SMTP 服务器可能会因为数量过多而拒绝接受您的任何连接,因为它可能认为您正在发出DDoS 攻击或您正试图做其他恶意的事情。

如上所述,只需尝试使用单个 SmtpClient 实例即可。

另一个可能的问题是 SmtpClient 没有通过发出 QUIT 命令正确退出连接。 This is a known bug , 并在 Microsoft .NET Framework 4 中得到修复。

关于c# - 发送电子邮件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3412653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com