2009-06-04 46 views
4

我需要通過經典asp應用程序上的後臺作業發送電子郵件,以便用戶不必等待緩慢的web服務器完成發送電子郵件。如何在傳統asp中執行多線程/後臺進程

我知道我可以使用Ajax生成兩個單獨的請求,但我寧願不需要Javascript。另外,我懷疑還有更好的方法來解決這個問題。想法?

+4

更好的方法:不要使用經典的ASP。對不起,我無法抗拒。 :) – Zifre 2009-06-04 20:28:42

+0

不要成爲仇敵。 – RedFilter 2009-06-04 20:59:19

+1

他不是一個仇恨 - 他是一個現實主義者。 – 2009-06-05 01:45:24

回答

11

你在思考得太狹隘。您不必從ASP發送電子郵件。把它放到數據庫中,然後有一個單獨的程序,每分鐘運行一次,併發送數據庫中的所有電子郵件。

1

對不起,但據我所知,沒有辦法使用舊的ASP生成單獨的線程。

如果你不想要AJAX那隱藏的IFRAME呢?醜,但它的作品...

2

3rd party COM objects你可以比IIS內置的內容更好地處理郵件。您只需傳遞消息並處理隊列,以便您的程序立即獲得控制權。

0

加快速度的一個好方法是指示CDOSYS使用Web服務器的IIS拾取目錄(通常爲c:\ inetpub \ mailroot \ pickup)。假設您的Web服務器安裝了SMTP虛擬服務器。

另一個類似但速度更快的選項是手動生成* .EML文件並將它們放在拾取目錄中。此外爲了避免可能的衝突,您可以將文件放在臨時目錄中,然後讓批處理文件以特定間隔將它們移動到拾取目錄。

3

我會同意tomjen這一個。將電子郵件保存在數據庫表中,然後使用後端過程實際發送電子郵件的方式非常有效,特別是在發送大量電子郵件時。我會推薦Perl做後端郵件程序,因爲有幾個包可以輕鬆完成工作。

1

如果您不想使用我的其他建議,您可能需要考慮運行一個不同的程序,只需發送電子郵件,然後通過COM或(本地)tcp套接字與此程序進行通信。這應該比通過互聯網連接服務器快得多,並且避免了使用數據庫的延遲。

2

Persits生成着名的AspEmail COM組件,該組件隨郵件排隊系統一起提供,它將滿足您的需求。

http://www.aspemail.com/manual_07.html

您的代碼基本上是手離開的消息來在服務器上運行,併發送任何郵件都在一個單獨的進程隊列,從而無法從完成舉起你的ASP腳本隊列守護程序發送它的執行。