-1

我在内网网页中有以下 vb.net 代码:

Sub SendEmail()
    MMsg = New MailMessage

    MMsg.BodyFormat = MailFormat.Html
    MMsg.From = "intranet@internal_company_name.com"

    MMsg.To = "someone@internal_company_name.com"
    MMsg.Subject = "subject goes here"
    MMsg.Body = "body goes here"
    SmtpMail.SmtpServer = "smpt server goes here"
    SmtpMail.Send(MMsg)
End Sub

只要MMsg.To仅包含公司内部电子邮件地址,即MMsg.To = "someone@internal_company_name.com;someone_else@internal_company_name.com". 当我尝试将外部公司电子邮件添加到 MMsg.To 时,即在内MMsg.To = "someone@internal_company_name.com;someone@extermal_company_name.com"网网页上提交表单时,我收到以下错误消息:

服务器拒绝了一个或多个收件人地址。服务器响应为:550 5.7.1 Unable to relay for someone@extermal_company.com

但是,内部电子邮件已成功接收,并在表单上处理了所有内容。这只是外部公司没有收到的外部电子邮件,以及当用户按下提交按钮时出现在用户屏幕上的错误。

我对此进行了搜索,一些解决方案建议我将localhost ip地址和Intranet服务器ip地址添加到Intranet上的iis中。我已经这样做了,它没有任何区别。不确定我是否应该在这样做之后重新启动 iis,就像在 linux 服务器上对 apache 进行更改时必须重新启动 apache 一样?

还是因为我们有一个真正的 smtp 服务器,它与实际的 Intranet 服务器是分开的,而我试图将 IP 地址添加到 Intranet 服务器中 iis 中的某个虚拟 smtp 服务器?

还是完全不同的东西?

4

2 回答 2

1

错误号显然是 SMTP 服务器错误号 - 与 .NET 无关。可以在此处找到更详细的错误描述(PDF 链接)

基本上可以归结为:

  • 如果您的 SMTP 服务器基于白名单,则您的外部地址/域需要被列入白名单。就像 Bartdude 上面所说的,请咨询管理服务器规则的人员。
  • 也许您需要身份验证才能使用该 SMTP 服务器。
  • 目标地址/域在某种黑名单中。

或者,您为什么不尝试使用其他一些 SMTP 服务器(例如 Gmail 的 smtp.gmail.com)来检查您是否可以将电子邮件发送到外部地址?

于 2013-06-05T16:16:10.100 回答
0

最有可能的问题是您需要在发送电子邮件之前进行身份验证。把它放在你的 web.config 中</configuration>标签之前:

<system.net>
    <mailSettings>
    <smtp from="me@yourdomain.com">
      <network host="mail.yourdomain.com" userName="me@yourdomain.com" password="mypassword" port="25" />
    </smtp>
    </mailSettings>
</system.net>

当然,将引号中的值替换为邮件服务器中的值。您还可以删除在代码中设置 SmtpServer 的行。

HTH,-布兰登

于 2013-06-06T02:32:15.657 回答