无法向外部公司发送电子邮件

时间:2013-06-05 14:30:51

标签: asp.net vb.net iis smtp .net-1.1

我在Intranet网页上有以下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",当我在Intranet网页上提交表单时,我收到以下错误消息:

  

服务器拒绝了一个或多个收件人地址。服务器   回复是:550 5.7.1无法接力   someone@extermal_company.com

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

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

或者是因为我们有一个真正的smtp服务器,它与实际的内部网服务器是分开的,我正在尝试将ip地址添加到内部网服务器中的iis中的某个虚拟smtp服务器上?

或者它是完全不同的东西?

2 个答案:

答案 0 :(得分:1)

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

基本上归结为:

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

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

答案 1 :(得分:0)

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

<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, 布兰登