我正在尝试使用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)”
我是否包含附件并不重要。 我相信问题出在我的网络托管公司,但到目前为止他们还没有提出解决方案。我需要建议告诉他们如何解决这个问题。或者,如果我可以在我的最后修复那将是很好的。
答案 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作为用户。正确的电子邮件用户名可能取决于您的主机公司。