gpt4 book ai didi

vb.net - 使用 Gmail 发送电子邮件会出现超时错误

转载 作者:行者123 更新时间:2023-12-04 02:00:10 26 4
gpt4 key购买 nike

我们正在测试一些代码以使用 Gmail 从表单发送电子邮件,但出现超时错误。

你能告诉我们这个代码缺少什么来发送电子邮件吗?

    Try
Dim SmtpServer As New SmtpClient()
Dim mail As New MailMessage()

SmtpServer.EnableSsl = True
SmtpServer.Credentials = New Net.NetworkCredential("ouremail@gmail.com", "MyPasswordGoesHere")
SmtpServer.Port = 465
SmtpServer.Host = "smtp.gmail.com"

mail.From = New MailAddress("ouremail@gmail.com")
mail.To.Add("ouremail@gmail.com")
mail.Subject = "Test Mail"
mail.Body = "This is for testing SMTP mail from GMAIL"

SmtpServer.Send(mail)

MsgBox("mail sent")

Catch ex As Exception
MsgBox(ex.ToString)
End Try

更新:
使用 MailBee 更改代码。这就是我们向所有客户发送电子邮件的方式:
    Dim strSqlStatement As String = "Select CustomerName, Email " & _
"From Customers " & _
"Where Email Is Not Null"
If IsConnected() Then

' Set up the sql command and lookup the parent.
'----------------------------------------------
Using objSqlCommand As SqlCommand = New SqlCommand(strSqlStatement, ObjConnection)

With objSqlCommand

' Open the SqlConnection before executing the query.
'---------------------------------------------------
Cursor = Cursors.WaitCursor

ObjConnection.Open()

Dim objDataReader As SqlDataReader = .ExecuteReader()

' Go through all the customers and send out the promotion emails.
'----------------------------------------------------------------
If objDataReader.HasRows Then

MailBee.Global.LicenseKey = "My license key goes here."

Dim objSMTP As New Smtp
Dim server As New SmtpServer(TextBoxSMTPServer.Text, TextBoxUserName.Text, TextBoxPassword.Text)

'SmtpServer.Host = TextBoxSMTPServer.Text
'SmtpServer.Port = TextBoxPort.Text
'SmtpServer.Timeout = 100

'If TextBoxUseSSL.Text = "Yes" Then
' SmtpServer.EnableSsl = True
'Else
' SmtpServer.EnableSsl = False
'End If

'If TextBoxUseDefaultCredentials.Text = "Yes" Then
' SmtpServer.UseDefaultCredentials = True
'Else
' SmtpServer.UseDefaultCredentials = False
'End If

'SmtpServer.Credentials = New Net.NetworkCredential(TextBoxUserName.Text, TextBoxPassword.Text)


objSMTP.SmtpServers.Clear()
objSMTP.SmtpServers.Add(server)

While objDataReader.Read()
If objDataReader("Email").ToString <> "" Then

objSMTP.Message.From.AsString = TextBoxEmailFrom.Text
objSMTP.Message.To.AsString = objDataReader("Email").ToString
objSMTP.Message.Subject = "Promotion: " & TextBoxID.Text
objSMTP.Message.BodyPlainText = "Dear " & objDataReader("CustomerName") & "," & vbCrLf & vbCrLf & TextBoxPromotionBodyText.Text

Try
objSMTP.Send()

Catch exBadPassword As MailBeeSmtpLoginBadCredentialsException
MsgBox("The login name or password is not correct.", MsgBoxStyle.Exclamation, "Email")
blnThereWereErrors = True

Catch exBadFromAddress As MailBeeSmtpRefusedSenderException
MsgBox("The sender email must be the same as the user's email address.", MsgBoxStyle.Exclamation, "Email")
blnThereWereErrors = True

Catch ex As Exception
MsgBox(ex.Message)
blnThereWereErrors = True
End Try
End If

If blnThereWereErrors Then
Exit While
End If
End While

If blnThereWereErrors = False Then
MessageBox.Show("Mass emailing has completed." & vbCrLf, _
"Email Message.", _
MessageBoxButtons.OK, _
MessageBoxIcon.Information)
End If
End If

objDataReader.Close()
ObjConnection.Close()

Cursor = Cursors.Default
End With ' objSqlCommand
End Using ' objSqlCommand

最佳答案

尝试使用不同的端口号。您不能将端口 465 与 System.Net.Mail 一起使用因为它只支持“显式 SSL”。看看this page有关这方面的更多信息。

通过 VB.NET 发送邮件时,Gmail 将接受端口 25 或 587,但使用端口 465 超时。

还要确保您有 UseDefaultCredentials = False
也看看this example关于如何在 C# 中使用 GMail 发送邮件,它可能会给你更多的线索。

关于vb.net - 使用 Gmail 发送电子邮件会出现超时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10690015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com