我正在尝试生成一个电子邮件功能,它向用户发送电子邮件,但由于某种原因,它只是无法正常工作,并且不会提供任何错误消息。
它只会弹出一个消息框,指出“此时出现问题。请稍后再试”。这是在电子邮件发送失败时出现的消息框,但是您可以帮助解决问题。
错误消息说
它说'发送电子邮件。 SMTP.Send(email) - System.dll中发生未处理的“System.Net.Mail.SmtpException”类型的异常附加信息:SMTP服务器需要安全连接或客户端未经过身份验证。服务器响应为:5.5.1需要身份验证。了解更多信息 -
请查看以下代码。
imports System.Net.Mail
Public Class EmailF
'assigns a new message to the email
Dim email As New MailMessage
'smtp is the server that has been used to send the email
Dim smtp As New SmtpClient
'assigns a new email address
Dim mail As System.Net.Mail.MailAddress
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
'selects which email address to send the email from...
email.From = New MailAddress("blood4all.business@gmail.com")
email.Subject = SubBox.Text
email.Body = MessBox.Text
email.To.Add(ToBox.Text)
'the smtp outlook host.
Dim SMTP As New SmtpClient("smtp.gmail.com")
'the smtp port.
SMTP.Port = 587
SMTP.EnableSsl = True
'the login details for the gmail account.
SMTP.Credentials = New System.Net.NetworkCredential("blood4all.business@gmail.com", "Blood123")
'starts the progress bar.
Timer1.Start()
ProgressB.Show()
'sends the email.
SMTP.Send(email)
'pop up box conirms that the email has been sent.
MsgBox("The e-mail has been sent!")
Catch ex As Exception
MsgBox("There is a problem at this time. Please try again later")
ProgressB.Hide()
End Try
End Sub
异常消息是:
System.dll中出现未处理的“System.Net.Mail.SmtpException”类型异常附加信息:SMTP服务器需要安全连接或客户端未经过身份验证。服务器响应为:5.5.1需要身份验证。了解更多信息......
答案 0 :(得分:1)
只有在设置新凭据之前将UseDefaultCredentials属性设置为false 时,才会使用您传递的凭据。否则,将使用您的Windows凭据。
更改此属性的值会清除Credentials
属性,这就是您在传递新凭据之前需要设置它的原因:
SMTP.UseDefaultCredentials = False
SMTP.Credentials = New System.Net.NetworkCredential("blood4all.business@gmail.com", "Blood123")
修改强>
您还必须允许安全性较低的应用程序"来自您的GMail帐户设置,如this SO question和GMail support site中所述。通常,GMail要求应用程序使用应用程序密钥。
SMTP(协议)没有此功能,因此您需要修改帐户设置以允许在没有应用程序密钥的情况下进行连接
答案 1 :(得分:0)
我现在已经开始工作,因为我创建了一个新的Gmail帐户,也许我的所有gmail帐户都包含网络和安全问题,现在已经修改过了。感谢您的帮助,非常感谢。