首页 > 解决方案 > “SMTP 服务器需要安全连接或客户端未通过身份验证”

问题描述

无法通过启用 google 访问不太安全的应用程序和两步验证来解决问题

我已启用谷歌访问不太安全的应用程序,但我仍然遇到问题.. 我什至尝试启用两步验证,但它无法正常工作..


Protected Sub sendMail_Click(sender As Object, e As EventArgs) Handles sendMail.Click
        Dim mainconn As String = System.Configuration.ConfigurationManager.ConnectionStrings("user_ConnectionString").ConnectionString
        Dim con As New SqlConnection(mainconn)

        Dim query As String = "Select email, password from user_information where email = @email"
        Dim cmd As New SqlCommand
        cmd = New SqlCommand(query, con)

        cmd.Parameters.AddWithValue("@email", txtBoxEmailSupport.Text.Trim)
        con.Open()
        Dim sdr As SqlDataReader = cmd.ExecuteReader()


        If sdr.Read() Then

            Dim email_password As String = sdr("email").ToString.Trim
            Dim password_reset As String = sdr("password").ToString.Trim

            Dim mm As New MailMessage("jackieyong36@gmail.com", txtBoxEmailSupport.Text.Trim)
            mm.Subject = "Your forgotten Password!"
            mm.Body = String.Format("Smtp is working, man~~", email_password, password_reset)
            mm.IsBodyHtml = True
            Dim smtp As New SmtpClient()
            smtp.Host = "smtp.gmail.com"
            smtp.EnableSsl = True
            Dim nc As New NetworkCredential("jackieyong36gmail.com", "12345")
            smtp.UseDefaultCredentials = True
            smtp.Credentials = nc
            smtp.Port = 587
            smtp.Send(mm)

            lblStatus.Text = "Your password has been sent to " + txtBoxEmailSupport.Text

        Else
            lblStatus.Text = "This email was not existed!"

        End If

标签: asp.netvb.net

解决方案


我已经用 auth 解决了这个问题,这段代码对我有用,从 NuGet 下载 MailKit并添加到你的参考资料中。你只需要启用不太安全的应用程序。

Private Sub SendMail()
    Dim message = New MimeMessage()
    message.From.Add(New MailboxAddress("Mr. Kako Kak", "yourgmail@gmail.com"))
    message.[To].Add(New MailboxAddress("Mrs. Chanandler Bong", "hisgmail@gmail.com"))
    message.Subject = "subjectText"
    message.Body = New TextPart("plain") With {
        .Text = "bodyText"
    }

    Using client = New SmtpClient()
        client.Connect("smtp.gmail.com", 465)
        client.AuthenticationMechanisms.Remove("XOAUTH2")
        client.Authenticate("yourgmail@gmail.com", "yourgmailpswd")
        client.Send(message)
        client.Disconnect(True)
    End Using
End Sub

推荐阅读