使用smtpclient在我的域外发送电子邮件不起作用

时间:2012-03-16 15:07:55

标签: vb.net email smtp

我正在尝试使用Winform 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)

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

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

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

4 个答案:

答案 0 :(得分:0)

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

SmtpServer.EnableSsl = True

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

只是一个想法...

答案 3 :(得分:0)

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