web-dev-qa-db-ja.com

localhost SMTPを使用してメールを送信する

SMTPサーバーをIISメール送信用にセットアップしようとしています。SMTPサーバーは、C#のASP.NETコードで使用することを目的としています。

以前は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);

今、IISでローカルホストSMTPサーバーを使用することを計画していますパラメーターUseDefaultCredentialsおよびCredentialsにどの値を指定する必要がありますか EnableSslがポート25を経由するため、falseを割り当てます。

また、最も単純なSMTP仮想サーバー構成になる可能性があるもの。

23
pencilslate

Localhostで使用できると思います:

SmtpClient smtpClient = new SmtpClient();
smtpClient.UseDefaultCredentials = true;
smtpClient.Send(mailMessage);
15
Natim

ローカルIIS SMTPサービスを使用している場合、DeliveryMethodをPickupDirectoryFromIisに設定します。たとえば、次のようになります。

  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;
28
dave wanta

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

3
Joel Coehoorn

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

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

次に、すべてを選択するか、127.0.0.1などの特定のIPのみを許可します。

SMTP Relay

2
Lee Englestone

Tx Natim、あなたの言うことは私のために働いた。 Exchange 2007サーバーで統合認証を使用するイントラネットアプリを今すぐ持ってください。

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) 
1
mahalie

Localhostでメールをテストする場合は、papercutツールをダウンロードしてインストールしてください https://papercut.codeplex.com/

以下のようにホスト名をlocalhostに変更します。 Papercutは、localhostを使用して送信するすべての電子メールをキャプチャします。

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