2012-01-16 7 views
0

を中継、私はそのコードを書いた:SMTP:エラーは、私が代わりにSMTPのサーバーのIPからの電子メールアドレスを送信した電子メールクライアントを作成してい

SmtpClient server = new SmtpClient("50.23.128.66"); 
MailMessage msg = new MailMessage("[email protected]", "[email protected]", "subject", "body"); 
server.Send(msg); 

が、私はそれを実行したとき、私はそのエラーを取得:

Unhandled Exception: System.Net.Mail.SmtpFailedRecipientException: Mailbox unavailable. The server response was: 5.7.1 Relaying Denied. at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressColl ection recipients, String deliveryNotify, SmtpFailedRecipientException& exception)

* は、ちなみに私は、Windows Server * 2008を使用していると私は、ローカルホストとポート25にSMTPサーバーを構成し、しかし、私はエラーを頼るということであるか知っている `tを。

+0

'someone @ foo.com'メールを' bar.com' SMTPサーバーから送信すると、 'bar.com'サーバーをメールリレーとして使用しています。 'bar.com'サーバがメールを中継するように設定されていない場合、それは自分自身のドメインの一部でないSMTPの試行を拒否します。言い換えれば、これはプログラミングエラーではなく、サーバーエラーであり、サーバー構成で確認する必要があります。おそらくserverfault.comに適しています。 –

答えて

1

中継は、SMTPサーバーが特定の送信者からの電子メールをルーティングする必要があることを認証するために使用する方法です。 「オープンリレー」は、認証がないことを意味し、SMTPサーバーは誰かから送信された電子メールを送信します。これは良い習慣ではなく、ユーザー名やパスワード、送信者のIPアドレスなど、認証する特定のSMTPサーバーにはおそらくいくつかのメカニズムがあります。必要なものを確認するには、SMTPサーバーの管理者に確認してください。私は少なくともあなたのコード例ではしなかったユーザー名とパスワードを設定する必要があると思います。

3

localhostを使用してメールを送信する場合は、コードに投稿したIPアドレスの代わりに127.0.0.1またはlocalhostを使用する必要があります。

+0

はい、私はそのサーバー上に3 ipsを持っています。メールを送信するときにipsを切り替えたいので、スパマーにならないようにします –

+2

ipsを切り替えると、スパマーとしてフラグが立てられません。それよりも複雑です。 – Icarus

関連する問題