2009-10-13 3 views
21

メールを送信するためにIIS上にSMTPサーバーを設定しようとしています。 SMTPサーバーはC#のASP.NETコードで使用されることを意図しています。localhostを使用してメールを送信するSMTP

以前はGmailのsmtpを使っていましたが、私はsmtp.gmail.comを安全なポートと私のGmailのuid/pwdのホストとして提供していました。それはうまくいった。これを行うために使用されるコードは次のとおりです。

SmtpClient smtpClient = new SmtpClient(); 
smtpClient.UseDefaultCredentials = false; 
smtpClient.Host = "smtp.gmail.com"; 
smtpClient.Port = 587; 
smtpClient.Credentials = new NetworkCredential(uname,pwd); 
smtpClient.EnableSsl = true; 
smtpClient.Send(mailMessage); 

は今、私は、パラメータUseDefaultCredentialsと資格情報の何値を与えるべきである、IIS上でローカルホストのSMTPサーバーを使用することを計画しています。ポート25を介してEnableSslにfalseを割り当てることになります。

さらに、最も単純なSMTP仮想サーバー構成は何か。

答えて

14

私はあなたが使用することができますローカルホストで考える:

SmtpClient smtpClient = new SmtpClient(); 
smtpClient.UseDefaultCredentials = true; 
smtpClient.Send(mailMessage); 
+0

動作しません。 「不明なSMTPホスト」エラーが発生する – lenden

+0

IIS SMTPサービスを開始しましたか? – Natim

+0

はい、それでも動作しません(私はwin8を持っていますが、私が理解しているように、私は全てを有効にしました)。私は ""のようなsmthをWeb設定に書くべきですか?それはまだ "未知のsmtpホスト"、私はこれらの3行を書く場合 – lenden

3

どのようにSMTPサーバを設定するかによって異なります。資格情報をまったく使用する必要はなく、ローカル接続のみを受け入れるようにサーバーを構成することもできます。

+0

@Joel: 私のSMTPサーバーのセットアップ: 認証:匿名アクセス IPアドレス:未使用のIPアドレスすべて アウトバウンドセキュリティ:匿名アクセス 好奇心、これが資格情報なしでメールを送信するための正しい設定である場合。 – pencilslate

+0

これはserverfaultの問題です。 –

26

ローカルのIIS SMTPサービスを使用しているときは、PickupDirectoryFromIisにdeliveryMethod(配信方法)を設定します。たとえば:

smtpClient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; 

これは完全にネットワーク層をバイパスし、ディスクに直接メッセージを書き込みます。そのチャットのSMTPプロトコルを通過するよりはるかに高速です。

あなたは上記のコードを使用している場合、それはあなたのコードのこの部分を取り除くことができることを意味:あなたは私のために働い言う

smtpClient.UseDefaultCredentials = false; 
smtpClient.Host = "smtp.gmail.com"; 
smtpClient.Port = 587; 
smtpClient.Credentials = new NetworkCredential(uname,pwd); 
smtpClient.EnableSsl = true; 
+4

これは、ローカルIISピックアップディレクトリを使用するための正解です。ファイルを書き込むだけなので、認証情報はまったく使用されません。IISはそれを送信します。 –

1

のTx Natim、。

Dim msg As New MailMessage() 
Dim smtp As SmtpClient 

msg.From = New MailAddress(strFrom) 
msg.To.Add(strTo) 
msg.Subject = strSubject 
msg.Body = strBody 

smtp = New SmtpClient("ServerName") 
smtp.UseDefaultCredentials = True 
smtp.Send(msg) 
2

リレーを有効にしましたか?

IIS6マネージャー(IISの検索で2つの結果が返されることがあります)を見つけたら、SMTPサーバーのプロパティにアクセスして[アクセス]をクリックし、リレーボタンを押します。

次に、あなただけのhttps://papercut.codeplex.com/

と変更自分自身を作ったツールをインストールするダウンロードし、すべてのか、ローカルホストでメールをテストする場合は127.0.0.1

SMTP Relay

+0

CDOSYSを使用していて、この仮想サーバーがセットアップされているサーバーから電子メールがスムーズに送信されていますが、ワークステーションからユーティリティを試してみると 'Transport to server to connect to server'というメッセージが表示されます。何か案が?ワークステーションもこの仮想SMTPサーバーを使用して電子メールを送信できるように、私のコードで変更する必要があります。 – elmo

0

のような特定のIPのをのみを許可する]を選択しますか、次のようにホスト名をlocalhostに変更します。 Papercutは、localhostを使用して送信したすべての電子メールを取得します。

smtpClient.UseDefaultCredentials = false; 
    smtpClient.Host = "localhost"; 
    smtpClient.Port = 587; 
    smtpClient.Credentials = new NetworkCredential(uname,pwd); 
    smtpClient.EnableSsl = true; 
+0

また、smtp4devは開発者向けのローカルsmtpサーバです。 – Birey

関連する問題