发送邮件时出错 - SMTP服务器需要安全连接或客户端未经过身份验证

时间:2014-03-06 11:15:25

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

我已尝试过大多数网络上可用的所有示例,但仍然无法正常工作,每当我点击提交按钮时显示此错误,请任何人帮我解决此问题

 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";
    }
}

web config

<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>

2 个答案:

答案 0 :(得分:0)

试试这个

 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);
        }

答案 1 :(得分:0)

我知道这个问题已经过时但我在其他帖子中找不到任何有用的东西。请务必检查您的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)
相关问题