gpt4 book ai didi

vb.net - "Pinging"使用 VB.Net 编码的电子邮件地址

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

在 VB.Net 中有没有一种方法可以“Ping”一个电子邮件地址来查看该电子邮件是否是真实的并且不会给出任何错误?

如果是,您能否展示实现此功能的 VB.Net 编码是什么样的?

我计划在需要客户电子邮件的应用程序中使用它,并且最好在电话接线员将其输入表格之前验证它,然后再保存客户详细信息。

这是我们用来向客户表中的所有客户发送电子邮件促销的代码:

Private Sub RibbonButtonSendTestEmail_Click(sender As System.Object, e As System.EventArgs) Handles RibbonButtonSendTestEmail.Click

Dim SmtpServer As New SmtpClient()
Dim mail As New MailMessage()
Dim strSqlStatement As String = "Select CustomerName, Email " & _
"From Customers "

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

SmtpServer.Host = TextBoxSMTPServer.Text
SmtpServer.Port = TextBoxPort.Text

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)

While objDataReader.Read()

Try
mail.To.Add(objDataReader("Email").ToString)
mail.From = New MailAddress(TextBoxEmailFrom.Text)
mail.Subject = "Promotion: " & TextBoxID.Text
mail.Body = "Dear " & objDataReader("CustomerName") & "," & vbCrLf & vbCrLf & TextBoxPromotionBodyText.Text

SmtpServer.Send(mail)

Catch exSMTP As SmtpException
MessageBox.Show("Sorry, I could not send an email for: " & _
vbCrLf & objDataReader("CustomerName") & "." & vbCrLf & _
"Please make sure it is correct.", _
"Error")

Catch exFormat As FormatException
MessageBox.Show("Sorry, this customer's email is not properly formatted: " & _
vbCrLf & objDataReader("CustomerName") & "." & vbCrLf & _
"Please make sure it is correct.", _
"Error")
End Try
End While

LabelEmail.Text = "Sent email promotions to the customers."
End If

objDataReader.Close()
ObjConnection.Close()

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

最佳答案

是的,这完全有可能:

1 DNS 查找域的 MX 记录

  • 可能有多个,您可以选择任何一个,尽管从技术上讲,偏好指标最低的是首选。

2 TCP连接到邮件服务器(端口25)

  • 问好:HELO
  • 表明您自己:mail from:<test@example.com>
  • 写信给谁:rcpt to<testaddress@example.com>
  • 此时服务器会回复一个响应,你会得到一个OK。或 550错误消息(例如:The email account that you tried to reach does not exist)
  • 断开连接,消息将被丢弃。

但是伙计,你想要 VB 代码来做这个吗?您只需要一个 DNS 谈话片段和 TCP 连接构建片段(或者可能有一些 SMTP 库可以为您完成所有这些工作 - 或者为您提供灵感来自己解决)。不要忘记,您可能会找到执行此操作的 C# 代码示例,并使用 Visual Studio 的转换工具将其切换到 VB。

注意

许多域都有黑洞/包罗万象...前者将接受任何电子邮件地址并在无效时将其删除,后者将接受任何电子邮件地址并将其转发到中央帐户(无法保证会发生什么然后......将发件人的地址卖给垃圾邮件发送者?)在这两种情况下你都不会得到 550消息,因此您永远无法确定。

关于vb.net - "Pinging"使用 VB.Net 编码的电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10743379/

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