【问题标题】:Error while sending mail - The SMTP server requires a secure connection or the client was not authenticated发送邮件时出错 - SMTP 服务器需要安全连接或客户端未通过身份验证
【发布时间】:2014-04-08 23:46:09
【问题描述】:

我几乎尝试了网上所有可用的示例,但仍然无法正常工作,每当我点击提交按钮时,它都会显示此错误,请任何人帮助我解决此问题

 protected void btnsubmit_Click(object sender, ImageClickEventArgs e)
{
    DAL.s_email = txtforget.Text;
    DataTable dt = new DataTable();
    dt = BAL.forgot_pass(DAL);
    if (dt.Rows.Count > 0)
    {
        System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
        msg.From = new MailAddress("my@email.com");
        msg.To.Add(txtforget.Text);
        msg.Subject = "Yor Password details";
        msg.Body = "Hi,<br>Please check your Login Details<br/><br/> Your Username : " + dt.Rows[0]["Username"] + "<br/><br/> Your Password " + dt.Rows[0]["Password"] + "<br/><br/>";
        msg.IsBodyHtml = true;
        SmtpClient smtp = new SmtpClient();
        smtp.Host = "smtp.gmail.com";
        smtp.Port = 587;
        smtp.EnableSsl = true;
        smtp.UseDefaultCredentials = false;
        smtp.Credentials = new System.Net.NetworkCredential("my@email.com", "****");                       
        smtp.Send(msg);
        Label2.Text = "your username and password is sent";
        txtforget.Text = "";
    }
    else
    {
        Label2.Text = "Email is not registered";
    }
}

网络配置

<system.net>
    <mailSettings>
        <smtp from="my@email.com">
            <network host="smtp.gmail.com" password="****" port="587" userName="my@email.com"  defaultCredentials="false" enableSsl="true"/>
        </smtp>
    </mailSettings>
</system.net>

【问题讨论】:

  • 什么是错误?显示出来。
  • SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 需要身份验证
  • 你用EnableSsl=false试过了吗?
  • 是的,但它给出了错误 - SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应是: 5.7.0 必须首先发出 STARTTLS 命令。 dk1sm19134965pbc.46 - gsmtp
  • 您的代码确实有效,我使用自己的 gmail 凭据进行了尝试,效果很好。只需再次检查您的凭据,确保用户名或密码有错误。还要确保您是从 gmail 帐户发送的。

标签: asp.net email c#-4.0 smtpclient


【解决方案1】:

试试这个

 protected void btnsubmit_Click(object sender, ImageClickEventArgs e)
  {


        MailMessage mail = new MailMessage();
        mail.To.Add(toemail);
        mail.From = new MailAddress("my@email.com");
        mail.Subject = "Mail";
                mail.Body = "  Hi,<br>Please check your Login Details<br/><br/> Your Username : " + dt.Rows[0]["Username"] + "<br/><br/> Your Password " + dt.Rows[0]["Password"] + "<br/><br/>";

        SmtpClient smtp = new SmtpClient();
        smtp.Host = "smtp.gmail.com";
        smtp.Port = 587;
        smtp.UseDefaultCredentials = false;
        smtp.Credentials = new System.Net.NetworkCredential("my@email.com", "password");
        smtp.EnableSsl = true;
        smtp.Send(mail);
        }

【讨论】:

  • 还是同样的错误,我在过去 3 天尝试了很多解决方案,但每次都出现同样的错误
【解决方案2】:

我知道这个问题很老,但我无法在其他帖子中找到任何有用的信息。请务必检查您的 msg.From 电子邮件是否正确:

msg.From = new MailAddress("my@email.com");

您的邮件服务器可能会成功验证您的凭据,但会拒绝您的电子邮件。为了帮助解释我在说什么,这里可能是邮件服务器的响应:

--> 235 2.7.0 Authentication successful
Authenticated as credentials@email.com
<-- MAIL FROM:<from@email.com>
530 5.7.0 Authentication required
Connection closed
SMTP session terminated (Bytes in/out: 482/955)

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 2011-05-28
    • 1970-01-01
    • 2015-03-29
    • 2021-04-12
    • 2017-12-02
    相关资源
    最近更新 更多