目前我正在做一個項目,在這個郵件發送過程中需要太多時間。經典ASP中的後臺電子郵件處理
我已經寫在該項目中的代碼首先發送一個郵件之後,它重定向到下一個步驟,但它需要太多的時間。所以現在我想將它重定向到另一個頁面,並且在後臺我想要執行此電子郵件過程。
是否可以在後臺經典ASP中發送電子郵件?
目前我正在做一個項目,在這個郵件發送過程中需要太多時間。經典ASP中的後臺電子郵件處理
我已經寫在該項目中的代碼首先發送一個郵件之後,它重定向到下一個步驟,但它需要太多的時間。所以現在我想將它重定向到另一個頁面,並且在後臺我想要執行此電子郵件過程。
是否可以在後臺經典ASP中發送電子郵件?
我有2個解決方案
1)EML文件 保存郵件的文件夾中的.eml文件和其他服務發送郵件給你。 http://www.afterlogic.com/mailbee-net/queue
2)電子郵件事務服務 使用電子郵件事務服務發送您的郵件。 https://sendgrid.com/或https://www.mandrill.com/
** @湯姆Baires **我正在經典的asp不在.NET上。是這樣的。eml概念適用於經典的asp? – Hetavi
通常,您不能輕易在傳統ASP中運行線程,請參閱here f.i.
由於Tom Baires的回答表明,你可以存儲的.eml作爲Web服務器上的文件,因此ASP文件將很快完成。你必須建立一個後臺任務來搜索這些文件以異步發送它們。
編輯:正如在this thread中討論的那樣,將詳細信息存儲在數據庫隊列中將比保存文件更好。
另一種辦法是處理電子郵件發送不同的頁面上,發送所需要的參數AJAX請求。請注意,您依賴於客戶端瀏覽器來完成請求。
這些都不是亂現成的解決方案,但我希望解釋是可以理解的,你找到一個解決方案。
就像你說的那樣,沒有*「開箱即用」*解決方案,但有101種方法可以做到這一點,將EML文件保存到服務器並不是我的第一選擇。第二個建議是我會考慮的,但運行服務器的XHR請求*(fire and forget)*並繼續,然後服務/代理以批處理方式處理髮出的請求。 – Lankymart
這正是第一個選項所描述的,即發送已保存的.eml文件的服務/代理。也許我不應該引用@湯姆的回答,因爲他可能意味着不同的東西。 – gpinkas
將任何文件存儲到服務器中都是過分的,特別是對於發送和忘記的電子郵件。理想情況下,您需要將細節存儲在數據庫/排隊機制*(如MSMQ)*中,然後服務/代理將信息提取並處理。參見[A:如何在經典的asp中執行多線程/後臺進程](http://stackoverflow.com/a/952956/692942)。 – Lankymart
如果一封電子郵件需要*「太多時間」*,那麼您的代碼可能存在實際問題,但在您向我們展示一些內容之前,我們無法建議使其更有效的方法。 – Lankymart
經典的asp沒有本地隊列支持,但你應該檢查出MSMQ https://msdn.microsoft.com/en-us/library/ms711472(v=vs.85).aspx – cfreear
@cfreear MSMQ只是排隊像RabbitMQ和其他機制,但你仍然需要一些東西來消費那個隊列,而不管你使用什麼。 – Lankymart