【问题标题】:SMTP fails on my domain and on gmailSMTP 在我的域和 gmail 上失败
【发布时间】:2015-03-20 13:44:06
【问题描述】:

编辑:我将添加该域由 Web.com 托管。也许其他人使用它们并经历过类似的事情。

下面的代码是为我自己的 smtp 服务器和 gmail 设置的。两者都因不同的原因而失败。我在 VS 2010/.Net 4 中写这个

当我从我自己的域 smtp 服务器发送时,我没有收到任何异常,我只是从不发送任何电子邮件。我试过从不同的账户发送到不同的账户。没有例外,只是永远不会交付。我更改了密码并确实收到和身份验证错误,这似乎证明我的凭据正确。我正在按照域名和端口的域名主机说明进行操作。

使用 gmail 时,我收到错误消息,“SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 需要身份验证。了解更多信息”。我阅读了有关此内容并按照链接以允许不太安全的设备访问我的 gmail。我收到了来自 gmail 的确认电子邮件,表明我已对不太安全的电子邮件进行了更改,但我仍然收到同样的错误。

我已阅读并尝试了以下链接中的所有内容,但无法通过此链接。

http://ithoughthecamewithyou.com/post/sending-email-via-gmail-in-cnet-using-smtpclient

c# SmtpClient class not able to send email using gmail

http://blogs.msdn.com/b/mariya/archive/2006/06/15/633007.aspx

Gmail Error :The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required

在查看我正在使用的代码时,有什么地方会突然出现并且不对吗?是属性设置错误还是我缺少某个属性?

Public Shared Sub SendMailMessage(ByVal sfrom As String, ByVal recepient As String, ByVal bcc As String, ByVal cc As String, ByVal subject As String, ByVal body As String)
    Try
        Dim mMailMessage As New MailMessage()

        mMailMessage.From = New MailAddress(sfrom)
        mMailMessage.To.Add(New MailAddress(recepient))

        If Not bcc Is Nothing And bcc <> String.Empty Then
            mMailMessage.Bcc.Add(New MailAddress(bcc))
        End If

        If Not cc Is Nothing And cc <> String.Empty Then
            mMailMessage.CC.Add(New MailAddress(cc))
        End If

        mMailMessage.Subject = subject
        mMailMessage.Body = body

        mMailMessage.IsBodyHtml = True
        mMailMessage.Priority = MailPriority.Normal

    'GMAIL
        'Dim mSmtpClient As New SmtpClient()
        'mSmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network
        'mSmtpClient.UseDefaultCredentials = True
        'mSmtpClient.EnableSsl = True
        'mSmtpClient.Host = "smtp.gmail.com"
        'mSmtpClient.Port = 587
        'mSmtpClient.Credentials = New System.Net.NetworkCredential("my gmail address", "my password")
        'mSmtpClient.Send(mMailMessage)

    'MY DOMAIN
        Dim mSmtpClient As New SmtpClient()
        mSmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network
        mSmtpClient.UseDefaultCredentials = True
        mSmtpClient.EnableSsl = False
        mSmtpClient.Host = "smtp.mydomain.com"
        mSmtpClient.Port = 587
        mSmtpClient.Credentials = New System.Net.NetworkCredential("my full email address", "my password")
        mSmtpClient.Send(mMailMessage)
    Catch ex As Exception
        'HttpContext.Current.Response.Redirect("~\EmailError.aspx")
        MsgBox(ex.Message, MsgBoxStyle.Information)
    End Try
End Sub

【问题讨论】:

  • 这个代码MsgBox(ex.Message, MsgBoxStyle.Information) 不会出现异常!!!您现在在服务器端,只需在此处记录错误...
  • Msgbox 仅用于开发。你会注意到我已经注释掉了服务器上的重定向。
  • 端口 587 用于两者。 Gmail 使用 SSL,我的主机明确表示不启用 SSL。当我这样做时,我得到一个异常,说该站点不支持安全连接。

标签: asp.net visual-studio-2010 gmail smtpclient


【解决方案1】:

对于 gmail,我的密码太弱了。啊!为什么 Google 不能直接告诉我,而不是说“SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应是:5.5.1 需要身份验证。了解更多信息”

这是一个身份验证错误,因此消息是准确的,只是具有误导性。我生命中的6个小时,我永远不会回来。哦,再加上我在电话上使用 Web.com 支持的无用半小时。

【讨论】:

  • 我回答得太早了。 SmtpClient 在我的本地开发机器上工作,但在 smtp.gmail.com 的服务器上失败。我认为是因为 gmail ssl 证书不在 web.com 服务器上。让它在那里可能需要国会的行动。
  • 4 次调用 web.com 支持并没有解决问题,但给了我足够的信息让它运行。一个人终于发现我应该使用内部 smtp 服务器 mailhub.registeredsite.com 从我的站点发送。他们告诉我我不需要端口号,但显然这是错误的。没有凭据的端口 25 有效。由于它只能从他们的服务器访问,因此不能用于从外部世界发送垃圾邮件。
猜你喜欢
  • 2017-10-26
  • 2019-01-20
  • 2020-09-24
  • 2018-05-29
  • 2021-04-01
  • 1970-01-01
  • 2014-07-21
  • 1970-01-01
  • 2020-12-29
相关资源
最近更新 更多