【问题标题】:Using smtpclient to send email outside my domain is not working使用 smtpclient 在我的域外发送电子邮件不起作用
【发布时间】:2012-04-05 21:48:10
【问题描述】:

我正在尝试在我的 Winforms VB.Net 程序中使用 SmtpClient() 发送邮件

代码如下:

Dim SmtpServer As New SmtpClient()
        Dim mail As New MailMessage()
        Dim _Attachment As String

        If gcloUtilities.GetUser(mHostName, mEMailUser, mEMailPassword, mFromEMail) = False Then
            Exit Sub
        End If
        SmtpServer.Credentials = New Net.NetworkCredential(mEMailUser, mEMailPassword)
        SmtpServer.Port = 587
        SmtpServer.Host = mHostName
        mail = New MailMessage()
        mail.From = New MailAddress(mFromEMail)
        mail.To.Add(mfrmSendAnEmail.txtTo.Text)
        mail.Subject = mfrmSendAnEmail.txtSubject.Text

        _Attachment = mDirectory & "\" & gcloGlobals.DocumentName & ".pdf"
        Dim oAttch As Attachment = New Attachment(_Attachment)
        mail.Attachments.Add(oAttch)

        mail.Body = mfrmSendAnEmail.txtBody.Text
        SmtpServer.Send(mail)

对于我使用邮件点元系统 dot com 的主机名,用户名和密码是我用来登录我的邮件服务器的用户名和密码。当收件人地址在我的域内时,此工作。例如 bob at-sign metaprosystems.com。当我发送到域外的电子邮件时,它不起作用。我在我的 catch 块中得到了这个异常:

“邮箱名称不允许。服务器响应是:抱歉,该域不在我允许的 rcpthosts 列表中 (#5.7.1)”

我是否包含附件并不重要。 我相信问题出在我的网络托管公司,但到目前为止他们还没有提出解决方案。我需要这样的建议,告诉他们如何解决这个问题。或者,如果我能最终解决它,那就太好了。

【问题讨论】:

    标签: vb.net email smtp


    【解决方案1】:

    您可以尝试使用 Gmail smtp 服务器而不是您自己的主机名发送电子邮件。

    【讨论】:

      【解决方案2】:

      您可能需要添加一条 mx 记录以允许连接到 smtp 服务器

      只是一个想法......

      【讨论】:

      • 感谢大家的建议,我的托管公司给了我答案。我需要使用 bob at-sign metaprosystems.com 而不仅仅是 bob 作为用户。正确的电子邮件用户名可能取决于您的托管公司。
      【解决方案3】:

      我不确定这是根本问题,但您可能想尝试在连接上启用 SSL。

      SmtpServer.EnableSsl = True
      

      编辑(1) 邮件服务器也可能在将邮件中继到服务域之外之前实现了一种 POP-BEFORE-SMTP 形式,在这种情况下,您可能需要先建立 POP 连接,然后再尝试发送邮件。 Here 是一篇关于如何在 .NET 中实现 POP3 客户端的文章。

      【讨论】:

      • 感谢您的建议。它给了我一个不同的例外:根据验证程序,远程证书无效。
      • 远程证书可能是自签名的,因此您的本地计算机不接受它。您可以手动下载并安装证书,也可以尝试临时设置委托以允许证书。 ServicePointManager.ServerCertificateValidationCallback = Function(sender As Object, certificate As X509Certificate, chain As X509Chain, sslPolicyErrors As SslPolicyErrors) True
      【解决方案4】:

      感谢大家的建议,我的托管公司给了我答案。我需要使用 bob at-sign metaprosystems.com 而不仅仅是 bob 作为用户。正确的电子邮件用户名可能取决于您的托管公司。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-11
        • 1970-01-01
        • 2011-07-03
        • 2015-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多