2009-09-29 21 views
7

以下のコードを使用して、 '[email protected]'のような外部ドメインアドレスに電子メールを送信することはできません。SMTPを使用して外部ドメインに電子メールを送信できません

SmtpClient smtpClient = new SmtpClient(smtpMailServer); 
smtpClient.UseDefaultCredentials = true; 
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; 
smtpClient.EnableSsl = true; 

//Sending mail. 
smtpClient.Send(mailMessage); 

私は例外を取得 -

Mailbox unavailable. The server response was: 5.7.1 Unable to relay for [email protected]

私はdeliveryMethod(配信方法)を変更する場合 -

smtpClient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; 

私は私のローカルマシン上の電子メールを送信することができています。しかし、それは例外で生産現場に失敗した -

Cannot get IIS pickup directory

あなたは何をすべきかを私に提案してくださいことはできますか?

+0

これがこれまでに解決されましたか?私はまったく同じ動作をしています。 – Kevin

+0

が見つかりましたか? –

答えて

1

通常、ユーザー名/パスワードを使用して外部メールサーバーで認証する必要があります。外部サーバーを使用している場合、これは渡す資格情報を認識しません。これはあなたの問題かもしれません。

1

宛先アドレス(この例ではasdf.com)のMXレコードを検索し、それをSmtpClientのホストプロパティに使用する場合は、は認証なしで配信するメッセージを受け入れる必要がありますそれはローカルユーザにとってです。 System.NetはMXレコードを返すことができる管理されたDNSクラスを提供していないので、これを行うにはP /呼び出しができます。それ以外の場合は、接続しているSMTPサーバーが中継していることを確認してから、SmtpClientのCredentialsプロパティをそのサーバーに接続するための適切な資格情報に設定する必要があります。 DeliveryMethodをPickupDirectoryFromIISに設定すると、ファイルをIISピックアップディレクトリに書き込むだけで、ファイルを書き込むだけで、実際の送信は行われません。

+0

+1電子メールの仕組みを知っている。また、そのドメイン(MXルックアップ)のサーバーに直接送信するだけでなく、他にも必要なことがあることに注意してください。主にスパム対策のために、メールの世界には多くのルールがあります。 「Sender ID」、「SPF」、「SMTP Sender Header」を検索することで、このルートへの参加を希望される方にお勧めします。 – eselk

4

私はこの問題を持っていたし、それは下記を参照の固定認証:1つのスラッシュはそれを動作させるためので、2つを使用するエスケープ文字であるため、

 SmtpClient client = new SmtpClient(EmailServer, 25); 
     var SmtpUser = new System.Net.NetworkCredential("domain\\username", "password"); 
     client.Credentials = SmtpUser; 
     client.DeliveryMethod = SmtpDeliveryMethod.Network; 

私はダブルスラッシュを使用する必要がありました。

0

私はこの問題に直面しました。これは、IIS 6.0マネージャー/ SMTP仮想サーバー/ドメインの下で、ドメイン名として「* .com」と「リモート」と入力したドメインを追加して解決しました。

私の場合、SMTPサーバーは匿名アクセスを許可しましたが。

関連する問題