2009-10-13 50 views
21

我想在IIS上設置SMTP服務器發送郵件。 SMTP服務器旨在供C#中的ASP.NET代碼使用。發送郵件使用本地主機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); 

現在我打算使用本地主機SMTP服務器上IIS,什麼價值,我應該給的參數UseDefaultCredentials和證書。我將爲EnableSsl分配false,因爲它通過端口25.

另外,什麼可能是最簡單的SMTP虛擬服務器配置。

回答

14

我想在本地主機可以使用:

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

它不起作用。我收到錯誤「未知的SMTP主機」 – lenden 2014-10-08 11:04:14

+0

您是否啓動IIS SMTP服務? – Natim 2014-10-08 16:06:51

+0

是的,但它仍然不起作用(我有win8,但據我瞭解,我激活了一切正確)。我應該寫「smtp deliveryMethod =」Network「from =」...「>」to web config?它仍然是「未知的smtp主機」,如果我只寫這3行 – lenden 2014-10-10 00:03:04

3

這取決於你如何配置smtp服務器。您可能根本不需要使用任何憑據,只需將服務器配置爲僅接受本地連接即可。

+0

@Joel: 我的SMTP服務器設置: 驗證:匿名訪問 IP地址:所有未分配的 出站安全:匿名訪問 好奇,如果這是發送郵件沒有憑據的正確的配置。 – pencilslate 2009-10-13 03:07:16

+0

這是serverfault的問題。 – 2009-10-13 03:52:53

26

當您使用本地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; 
+4

這是使用本地IIS拾取目錄的正確答案。由於它只是寫入一個文件,因此它不會使用任何憑據,IIS只會爲您發送它。 – 2009-10-13 21:23:04

1

的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) 
2

你試過使繼電器?

找到IIS6管理器(我發現搜索IIS可能會返回2個結果)轉到SMTP服務器屬性,然後'訪問',然後按繼電器按鈕。

然後你可以選擇全部或只允許某些IP的像127.0.0.1

SMTP Relay

+0

我正在使用CDOSYS,並從服務器設置此虛擬服務器電子郵件發送順利,但是當我從工作站嘗試我的實用工具'傳輸失敗連接到服務器'消息。任何想法?我需要在代碼中進行更改,以便工作站也能夠使用此虛擬SMTP服務器併發送電子郵件。 – elmo 2016-09-23 10:11:17

0

如果你想測試在本地主機的郵件,只要下載安裝剪紙工具https://papercut.codeplex.com/

和變化主機名到localhost如下。 Papercut捕獲使用本地主機發送的所有電子郵件。

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

也smtp4dev是一個本地smtp服務器的開發人員。 – Birey 2017-11-28 18:28:57

相關問題