簡體   English   中英

使用Java和Spring緩慢發送電子郵件

[英]Send emails slowly with Java and Spring

您好,我有一個將電子郵件發送給一組用戶的應用程序。 我今天的問題是,有很多用戶必須立即發送一封郵件,而smpt服務器會阻塞,我如何一點一點地將spring郵件發送給該用戶。

提前致謝。

在衛星/中繼模式下設置支持排隊(例如Postfix)的本地MTA。 讓它中繼到您的真實SMTP服務器。 確保它是安全的,即只能從本地請求中繼。

將您的電子郵件放在本地MTA中。 您可以按照需要的最快速度刪除它們,並且本地MTA會在可能的情況下將它們發送到遠程SMTP服務器。

將您的應用分成兩部分。 一件准備電子郵件,然后將消息提供給后端服務。 后端服務一直運行,並且在有電子郵件要發送時,它會在消息之間暫停,以避免郵件服務器超載。 鏈接這兩者的方法有很多,但是真正簡單的方法是將少量的電子郵件請求簡單地寫入傳入目錄中的文件中。 只需將10封電子郵件寫入一個文件,然后編寫一些END OF BATCH指示器,將其關閉,打開一個新文件,然后再編寫其他文件。 然后,后端任務將在此傳入目錄中查找文件。 找到文件后,它將嘗試讀取整個內容,然后尋找END OF BATCH指示器。 如果不存在,請重試(或繼續閱讀)。 批處理完成后,將一封電子郵件發送到郵件服務器,暫停x秒,再發送一封,依此類推。 您將不得不嘗試使用x的值來找到一個可靠的參數,該參數仍然可以發送郵件,即防止傳入目錄填充磁盤。 當然,一旦發送了一批,則刪除包含它的文件。

更好的方法是將Camel(來自Apache)集成到兩個應用程序中,並定義使用某種消息傳遞來發送電子郵件請求(例如JMS或SEDA)的端點。 但是,您仍然會將與郵件服務器的通信分離為一個單獨的任務,並在該任務與主應用程序之間使用緩沖區。 實際上,由於郵件服務器無法為您緩沖足夠的工作,因此您必須在自己的側面放置一個緩沖區以使事情順利進行。

暫無
暫無

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

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