簡體   English   中英

如何正確設置IIS5的SMTP服務以從我的開發環境發送電子郵件?

[英]How do I properly setup IIS5's SMTP service to send email from my development environment?

我正在嘗試使用SmtpClient類從ASP.NET Web應用程序發送電子郵件。 到目前為止,我已授予對127.0.0.1的中繼訪問權限。 我正在嘗試將測試電子郵件發送到我的Gmail帳戶。 EML文件卡在mailroot的隊列文件夾中。 我的WinXP防火牆已禁用。 我在代碼中沒有任何例外,但電子郵件永遠不會傳遞到目標地址。 我也嘗試了其他電子郵件帳戶。

        SmtpClient client = new SmtpClient();
        client.Host = "127.0.0.1";

        MailMessage message = new MailMessage();
        message.To.Add("myemail@gmail.com");
        message.From = "name@domain.com";
        message.Subject = subject;
        message.IsBodyHtml = false;
        message.Body = body;

        client.Send(message);

以下是IIS SMTP日志的片段。

Software: Microsoft Internet Information Services 5.1
Version: 1.0
Date: 2009-01-16 18:28:28
Fields: time c-ip cs-method cs-uri-stem sc-status 
18:28:28 127.0.0.1 EHLO - 250
18:28:28 127.0.0.1 MAIL - 250
18:28:28 127.0.0.1 RCPT - 250
18:28:28 127.0.0.1 DATA - 250
18:29:45 127.0.0.1 MAIL - 250
18:29:45 127.0.0.1 RCPT - 250
18:29:45 127.0.0.1 DATA - 250
18:30:37 127.0.0.1 QUIT - 0

根據網絡的設置方式,您可能需要告訴IIS將電子郵件傳遞到Exchange服務器以傳遞到外部世界。 去做這個:
1.右鍵單擊IIS MMC管理單元中的“默認SMTP虛擬服務器”節點,然后打開“屬性”對話框。
2.轉到“傳遞”選項卡,然后單擊選項卡底部的“高級”按鈕。
3.在“智能主機”框中,輸入Exchange服務器的名稱。 (或者相同的DNS條目,例如smtp.mydomain.com)

我剛剛遇到同樣的問題,我想我知道為什么 - 以及解決方案。

問題以及如何測試它
首先,我檢查了我可以通過端口25進行連接。例如,通過在命令提示符中打開telnet並輸入來輕松完成(小圓圈是自己的字母O,而不是符號:));

 o auth.smtp.1and1.co.uk 25

如果連接(而不是給你一個錯誤),那么它不是端口25的防火牆問題。如果它確實給你一個錯誤,那么首先檢查你的防火牆設置,直到它工作。

接下來,我啟用了SMTP服務中的日志記錄並勾選了所有擴展屬性。 然后,這在日志文件中給了我兩個URL。 就我而言,他們是
http://www.spamhaus.org/query/bl?ip=217.44.248.144
http://www.sorbs.net/lookup.shtml?217.44.248.144

在這些鏈接之后,它基本上變得清晰,那里的人(我猜接收服務器)正在檢查並看到我從動態IP地址發送(我只是通過ADSL在家中這樣做)並因此阻止它作為垃圾郵件。

解決方案
您需要將SMTP服務器配置為通過ISP的SMTP服務器進行中繼。
1.轉到SMTP服務的屬性,然后轉到“交付” - >“高級”
2.將ISP的SMTP服務器的名稱放在“智能主機”字段中(例如auth.smtp.1and1.co.uk)
3.保存
4.返回“傳遞”選項卡,單擊“出站安全性”選項卡
5.單擊“基本身份驗證”並指定用於訪問電子郵件的用戶名和密碼。

注意; 我假設您必須對您的ISP SMTP服務器進行身份驗證,並且他們使用相同的uid / pwd用於POP3 / IMAP和SMTP,因為這是最常見的。 您的情況可能會有所不同 - 請查看電子郵件程序中的電子郵件設

我還在測試這個Jim,我注意到的一件事是你沒有正確設置你的地址。 From接受MailAddress類而不是字符串。

更改:

message.From = "name@domain.com";

至:

message.From = new MailAddress("name@domain.com");

在默認SMTP設置下:

“IP地址:”下拉列表是設置為127.0.0.1還是(全部未分配)? 如果可能,將其設置為“全部未分配”。 嘗試添加綁定到您的計算機的IP地址,以便能夠通過SMTP服務進行中繼。 雖然您向主機127.0.0.1發送電子郵件,但它可能是從您指定的本地網絡發送的。 要確保內容正常工作,您可能需要在“中繼限制”中選擇“除下面列表以外的所有內容”中的單選按鈕並清除列表。 這將打開繼電器以測試您的配置。 一旦找出問題所在,就應該限制這一點。

SMTP日志中是否列出了任何錯誤代碼?

如果代碼沒有返回異常,則它不可能是那里的任何東西。 如果您查看原始.EML文件,請檢查並查找不合適的地方。

但是,最可能的問題就是給IIS一個“iisreset”。 這樣做,你可能會看到消息開始發送。 在重新啟動之前,SMTP服務器上的配置更改並不總是起作用。

檢查您的事件查看器,然后您將看到類似的內容

由於以下原因,向遠程域“yahoo.com”的郵件傳遞失敗:發生SMTP協議錯誤。

有關詳細信息,請參閱http://go.microsoft.com/fwlink/events.asp上的“幫助和支持中心”。

(這是我的)。 我認為雅虎必須有某種協議嗎? 或者我們設置了錯誤的協議? 仍在計算..給我發電子郵件給我jokenjp@yahoo.com(有一個很好的主題,所以我不認為是垃圾郵件)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM