-1

イントラネット Web ページに次の 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"、イントラネット Web ページでフォームを送信するとすぐに、次のエラー メッセージが表示されます。

サーバーが 1 つ以上の受信者アドレスを拒否しました。サーバーの応答は次のとおりです: 550 5.7.1 someone@external_company.com を中継できません

ただし、内部メールは正常に受信され、すべてがフォームで処理されます。外部企業が受信しない外部メールと、ユーザーが送信ボタンを押したときにユーザー画面に表示されるエラーだけです。

これについて検索したところ、ローカルホストの IP アドレスとイントラネット サーバーの IP アドレスをイントラネット上の iis に追加することを提案する解決策がありました。私はこれを行いましたが、違いはありませんでした。LinuxサーバーでApacheに変更を加えるときにApacheを再起動する必要があるように、それを行った後にiisを再起動する必要があるかどうかわかりませんか?

それとも、実際のイントラネット サーバーとは別の実際の smtp サーバーがあり、イントラネット サーバーの iis にある仮想 smtp サーバーに IP アドレスを追加しようとしているからですか?

それとも全く違うものですか?

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 に答える