職場の PC (システム トレイ) で実行される Windows サービスがあり、1 日の特定の時点で、Rackspace Virtual Server でホストされている Wordpress サイトに電子メールを送信します。
現時点では、基本的な MailMessage 関数を使用しているだけで、動作しています。
MailMessage message = new MailMessage(sendfrom, sendto, subject, emailmessage);
message.IsBodyHtml = html;
SmtpClient client = new SmtpClient();
client.Send(message);
ただし、構成ファイルでは、オフィスのメールホストを使用しています。
<system.net>
<mailSettings>
<smtp>
<network host="generic.smtp.myoffice"/>
</smtp>
</mailSettings>
</system.net>
Rackspace クラウド サーバーで独自のメールホストとメール サーバーを使用するように変更したいと考えています。
ネットワークホストを自分のサーバーのホスト名に変更すると、送信元と送信先の両方の電子メールアドレスがそのサーバーに存在するアドレスであるため、それは限り機能します。たとえば、私のRackspaceサーバーのホスト名は
myserver.monkeymagix.com
2つのサイトを設定しています
www.site1.com と www.site2.com の両方に電子メール アカウントがあります。
ネットワークホストを
<system.net>
<mailSettings>
<smtp>
<network host="myserver.monkeymagix.com"/>
</smtp>
</mailSettings>
</system.net>
そして、admin@site1.com から admin@site2.com に電子メールを、Rackspace サーバーに接続されていない職場の PC の単純なコンソール スクリプトから送信すると、機能し、電子メールを受信します。
ただし、受信者の電子メール アドレスを職場の電子メール アドレス (例: rob@office.com) に変更すると、スクリプトを実行すると次のエラーが表示されます。
電子メールの送信 テスト電子メールは、SMTP エラーのため送信できませんでした。処理に失敗しました。サーバーの応答は次のとおりでした: 5.7.1 : リレー アクセスが拒否されました 電子メール テストの送信の完了
したがって:
a) スクリプトが職場の PC で実行され、送信者と受信者の両方がリモート Rackspace サーバーのドメインである場合、テストが機能するのはなぜですか?
b) または逆に、受信者アドレス (または送信者と受信者の両方のアドレス) が私の職場のアドレスである場合に機能しないのはなぜですか?
c) 何か奇妙なことが起こっている場合、サーバーのホスト名を指定するだけでなく、仕事用 PC (または任意の PC) から (クラウド サーバー上の) 自分のメール サーバーを介して安全にメールを送信できるようにするには、どのように設定すればよいですか? (ポート番号なしなど) ?
Windows サービスを別のマシンに移動できるようにしたいのですが、Rackspace Cloud サーバーを介して適切かつ安全に電子メールを送信できるようにアプリケーションをセットアップする方法を知る必要があります。私のファイアウォールは正しく設定されており、専門家の少年は、設定に問題は見られず、サービス/ポートにアクセスして悪用することはできないと言いました。したがって、クラウドサーバーに接続していないときに、仕事用PCからクラウドサーバーを介してメールを送信できるのはなぜだろうかと思います(私は知っています)。
どんな助けでも大歓迎です。何が起こっているのか、また NET クラスをどのようにセットアップすればよいかを知らせて、おそらくリモートの EXE からメールホスト経由で電子メールを送信できるようにします。
ありがとう