【发布时间】:2020-05-31 05:31:16
【问题描述】:
最近我正在通过 c# 编码发送邮件,我尝试在 Visual Studio 平台上通过 c# 编码发送邮件,它在我的 Visual Studio 本地主机上工作得很好。但是当我在 myASP.NET 或 Somee.com 等其他托管网站上运行相同的代码时,代码会出错。
类似错误(如果我使用 smtp.gmail.com 则类似错误
SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:需要 5.7.0 身份验证。了解更多信息)
并且(如果我使用 smtp.somee.com 则会生成类似的错误
发送邮件失败。)
在c#中发送邮件的代码是,
String username = "";
string password = "";
OleDbConnection con = new OleDbConnection(ConfigurationManager.ConnectionStrings["cstring"].ConnectionString);
OleDbCommand cmd = new OleDbCommand("select umail, lpwd from uregister where umail=@email", con);
cmd.Parameters.AddWithValue("email", txtEmail.Text);
con.Open();
using(OleDbDataReader sdr = cmd.ExecuteReader()) {
if (sdr.Read()) {
username = sdr["umail"].ToString();
password = sdr["lpwd"].ToString();
}
}
con.Close();
if (!string.IsNullOrEmpty(password)) {
MailMessage Msg = new MailMessage();
// Sender e-mail address.
Msg.From = new MailAddress(txtEmail.Text);
// Recipient e-mail address.
Msg.To.Add(txtEmail.Text);
Msg.Subject = "Your Password Details";
Msg.Body = ("Your Username is:" + username + "<br/><br/>" + "Your Password is:" + password);
Msg.IsBodyHtml = true;
// your remote SMTP server IP.
SmtpClient Smtp = new SmtpClient();
Smtp.Host = "";
Smtp.Port = 587;
NetworkCredential ntwd = new NetworkCredential();
ntwd.UserName = "xyz@gmail.com"; //Your Email ID
ntwd.Password = "xyz123."; // Your Password
Smtp.UseDefaultCredentials = false;
Smtp.Credentials = ntwd;
Smtp.EnableSsl = true;
Smtp.Send(Msg);
lbltxt.Text = "Your Password Details Sent to your mail.";
// Clear the textbox valuess
txtEmail.Text = "";
}
else
{
lbltxt.Text = "The Email you entered not exists.";
}
此代码不适用于托管站点 somee.com/myASP.NET。所以请让我知道这段代码有什么问题..
【问题讨论】:
-
您需要提供您的邮件服务器 - 然后检查邮件服务器上的问题所在。也许您需要联系您的提供商寻求帮助 - 无论如何,信息非常明确。
-
这是正确的
Smtp.Host = "";吗?你没有设置主机?
标签: c# asp.net asp.net-core c#-3.0 c#-2.0