郵件轉發方法及系統與流程
2023-05-05 12:13:06 1
本發明涉及數據傳輸技術領域,特別是涉及一種郵件轉發方法及系統。
背景技術:
在企業信息系統,尤其是工作流管理系統之中,每個作業大都由多個子任務協作完成,而每個子任務完成之後,系統便自動發送郵件到郵件伺服器,相關人員從郵件伺服器中收取次郵件。
在實現過程中,發明人發現傳統技術中至少存在如下問題:
郵件發送功能無法統一管理,傳統的技術方案把郵件發送模塊分散到企業信息系統的各個功能之中,每個子系統都要單獨實現自身的郵件發送功能。另外,郵件發送模塊直接發送郵件到郵件伺服器,難以應對不同場景下的需求變更。例如,收件人會頻繁收到系統通知郵件,若希望系統把此類郵件合併之後,以一封郵件的形式發送給自己,則需要把多個郵件發送模塊所發送的郵件按照一定規則合併之後再進行轉發。同時,傳統的技術方案難以解決相似郵件合併轉發的需求,信息系統中,例如訂單模塊,由於訂單量大,以及每筆訂單都要發送多封郵件,收件人便會頻繁收到系統郵件通知,收件人無暇顧及所有郵件。而這些郵件大部分的功能都是相似的,收件人希望能以一封郵件的方式收到所有郵件。總之,傳統技術方案把郵件發送模塊分散到各個子系統之中,無法做到統一管理,難以統一應對郵件定時發送、相似郵件合併發送等客戶客觀需要以及用戶自定義的發送需求。
技術實現要素:
基於此,有必要針對傳統技術方案難以統一應對用戶的客觀需要(如郵件定時發送、相似郵件合併發送)或自定義需求的問題,提供一種郵件轉發方法及系統。
為了實現上述目的,本發明技術方案的實施例為:
一方面,提供了一種郵件轉發方法,包括以下步驟:
由消息中間件接收企業信息系統發送的預設格式的郵件消息,並將郵件消息存儲在消息中間件的消息隊列中;
郵件發送模塊從消息隊列中提取郵件消息,並根據郵件消息的屬性欄位,獲取郵件消息的發送屬性類型;屬性欄位包括郵件發送類型欄位;
郵件發送模塊根據發送屬性類型,將對應的郵件消息以相應的發送方式轉發給郵件伺服器。
一方面,還提供了一種郵件轉發方法,包括以下步驟:
接收企業信息系統發送的預設格式的郵件消息,並將郵件消息存儲在消息隊列中;
在接收到郵件發送模塊的提取消息指令時,將消息隊列中的郵件消息發送給郵件發送模塊;
由郵件發送模塊根據郵件消息的屬性欄位,獲取郵件消息的發送屬性類型;屬性欄位包括郵件發送類型欄位;
由郵件發送模塊根據發送屬性類型,將對應的郵件消息以相應的發送方式轉發給郵件伺服器。
另一方面,提供了一種郵件轉發系統,包括:
消息提取單元,用於從消息中間件的消息隊列中,提取消息中間件接收到的企業信息系統發送的預設格式的郵件消息;
獲取發送屬性類型單元,根據郵件消息的屬性欄位,獲取郵件消息的發送屬性類型;屬性欄位包括郵件發送類型欄位;
發送單元,用於根據發送屬性類型,將對應的郵件消息以相應的發送方式轉發給郵件伺服器。
上述技術方案具有如下有益效果:
本發明郵件轉發方法及系統,使得企業信息系統可以對修改封閉,對擴展開放,以面向服務方式提供郵件轉發功能;在不修改原有信息系統郵件發送模塊的前提下,滿足用戶在實際使用中的客觀需求(例如郵件定時轉發和相似郵件合併轉發功能);本發明在企業信息系統與郵件伺服器之間添加「消息中間件」實現郵件轉發系統,來實現郵件相應的發送功能,例如:可以解決用戶頻繁收到系統郵件問題;對於功能類似的提醒郵件,在郵件發送模塊判斷合併規則,對相似郵件合併之後再轉發,大大減少了用戶收到郵件數量,使得用戶在單封郵件中接收多封郵件內容。
附圖說明
圖1為本發明基於郵件發送模塊實現的郵件轉發方法實施例1的流程示意圖;
圖2為本發明基於消息中間件實現的郵件轉發方法實施例2的流程示意圖;
圖3為本發明郵件轉發方法具體實施例的流程序列圖;
圖4為本發明郵件轉發系統實施例1的結構示意圖;
圖5為本發明郵件轉發系統實施例2的架構示意圖。
具體實施方式
為了便於理解本發明,下面將參照相關附圖對本發明進行更全面的描述。附圖中給出了本發明的首選實施例。但是,本發明可以以許多不同的形式來實現,並不限於本文所描述的實施例。相反地,提供這些實施例的目的是使對本發明的公開內容更加透徹全面。
除非另有定義,本文所使用的所有的技術和科學術語與屬於本發明的技術領域的技術人員通常理解的含義相同。本文中在本發明的說明書中所使用的術語只是為了描述具體的實施例的目的,不是旨在於限制本發明。本文所使用的術語「及/或」包括一個或多個相關的所列項目的任意的和所有的組合。
本發明基於郵件發送模塊實現的郵件轉發方法實施例1:
為了解決傳統技術方案難以統一應對用戶的客觀需要(如郵件定時發送、相似郵件合併發送)或自定義需求的問題,本發明提供了一種基於郵件發送模塊實現的郵件轉發方法實施例1;圖1為本發明基於郵件發送模塊實現的郵件轉發方法實施例1的流程示意圖;如圖1所示,可以包括以下步驟:
步驟S110:由消息中間件接收企業信息系統發送的預設格式的郵件消息,並將郵件消息存儲在消息中間件的消息隊列中;
步驟S120:郵件發送模塊從消息隊列中提取郵件消息,並根據郵件消息的屬性欄位,獲取郵件消息的發送屬性類型;屬性欄位包括郵件發送類型欄位;
步驟S130:郵件發送模塊根據發送屬性類型,將對應的郵件消息以相應的發送方式轉發給郵件伺服器。
具體而言,為了解決傳統技術難以應對不同場景的需求變更以及系統郵件定時轉發和相似郵件合併轉發功能,使得原企業信息系統做到對修改封閉,對擴展開放,本發明在不修改原有系統郵件發送模塊的前提下,實現郵件定時轉發和相似郵件合併轉發功能,本發明在信息系統以郵件伺服器之間添加「消息中間件」實現郵件轉發系統,來實現郵件定時轉發以及相似郵件合併轉發的功能。並以服務方式提供給各個信息子系統。
在一個具體的實施例中,郵件發送類型欄位為定時發送欄位;
步驟S130中郵件發送模塊根據發送屬性類型,將對應的郵件消息定時轉發給郵件伺服器的步驟包括:
郵件發送模塊根據定時發送欄位,獲取定時時間,並生成與郵件消息對應的識別碼,將識別碼發送給計時器;
由計時器根據識別碼,在定時時間到來時,調用郵件發送模塊將郵件消息發送給郵件伺服器。
具體而言,定時郵件具體實現步驟可以包括:
1、郵件發送模塊從消息隊列中取得JSON格式消息;
2、從Fixed-Time欄位取得定時時間,並生成唯一UUID(Universally Unique Identifier)對應此消息;
3、把此郵件消息放入資料庫定時發送臨時表,並把此UUID加入Timer計時器;
4、Timer計時器到時,從定時發送臨時表中刪除該郵件消息,並將該郵件消息發送到郵件伺服器。
在一個具體的實施例中,郵件發送類型欄位為合併發送欄位;
步驟S130中郵件發送模塊根據發送屬性類型,將對應的郵件消息合併轉發給郵件伺服器的步驟包括:
郵件發送模塊根據發送屬性類型,將對應的郵件消息以相應的發送方式轉發給郵件伺服器的步驟包括:
郵件發送模塊根據合併發送欄位,獲取郵件消息對應的合併規則和合併標識;
在計時器中查找是否存在與合併標識對應的識別碼:
若存在,獲取識別碼;
若不存在,生成與合併標識對應的識別碼,並將識別碼發送給計時器;
由計時器根據識別碼和合併規則,調用郵件發送模塊將郵件消息發送給郵件伺服器。
具體而言,相似郵件合併轉發的步驟可以包括:
1、郵件發送模塊從消息隊列中取得JSON格式消息;
2、從JSON消息抽取合併標識以及合併策略(即合併規則),如下:
(1)用於合併郵件的標識(這些標識都一樣才合併郵件):
①Sys-Id:系統Id
②Sys-Module:系統模塊
③To-Add:收件人
④Cc-Add:抄送人
⑤Bcc-Add:秘密抄送人
(2)合併策略:
①每個一段固定時間合併一次,以當前緩存中收到的郵件的最早時間作為合併起始時間,每隔一段固定時間(如30分鐘)合併一次;
②收到固定條數的郵件之後合併一次,如每10封郵件合併為一封。
3、根據上述第2步的合併標識,查看Timer計時器中是否存在此標識。如果存在,則依據此標識選擇Timer中已有UUID作為此消息UUID,加入合併發送臨時表;如果不存在,則生成新UUID,同時把新UUID賦予消息,加入合併發送臨時表,同時加入Timer,開始計時。
4、Timer計時器到時,從合併發送臨時表中刪除該郵件消息,並發送此郵件到郵件伺服器。
在一個具體的實施例中,消息中間件通過REST(Representational State Transfer)接口接收企業信息系統發送的郵件消息;消息中間件在內部以JMS(Java Message Service)格式路由郵件消息;消息中間件為ActiveMQ或RabbitMQ。
郵件發送類型欄位為以下欄位類型中的任意一種或任意組合:定時發送欄位、合併發送欄位、自摧毀發送欄位和自定義功能發送欄位;預設格式為JSON格式。
具體而言,消息中間件向信息系統提供REST接口,企業信息系統把要發送的郵件內容以JSON格式發送到消息中間件隊列,具體郵件服務從消息隊列中收取郵件消息,實現郵件轉發模塊與信息系統之間的異步通信;
而郵件發送類型欄位可以為定時發送欄位、合併發送欄位、自摧毀發送欄位或自定義功能發送欄位;其中自定義功能發送欄位為用戶根據自身需求選取的,例如限定發送對象等功能。
在一個具體的實施例中,步驟S130在郵件發送模塊根據發送屬性類型,將對應的郵件消息以相應的發送方式轉發給郵件伺服器的步驟之前還包括步驟:
存儲郵件消息和郵件消息對應的發送屬性類型。
具體而言,可以通過存儲服務實現上述步驟,存儲服務可用於郵件消息定時轉發、合併轉發前的消息存儲,主要包括用於定時轉發以及合併轉發的控制信息和郵件消息本身,以及郵件消息本身的備份。
本發明郵件轉發方法實施例1,使得企業信息系統可以對修改封閉,對擴展開放,以面向服務方式提供郵件轉發功能;在不修改原有信息系統郵件發送模塊的前提下,滿足用戶在實際使用中的客觀需求(例如郵件定時轉發和相似郵件合併轉發功能);本發明在信息系統與郵件伺服器之間添加「消息中間件」實現郵件轉發系統,來實現郵件相應的發送功能,例如可以解決用戶頻繁收到系統郵件問題;對於功能類似的提醒郵件,在郵件發送模塊判斷合併規則,對相似郵件合併之後再轉發,大大減少了用戶收到郵件數量,使得用戶在單封郵件中接收多封郵件內容。
圖2為本發明基於消息中間件實現的郵件轉發方法實施例2的流程示意圖;如圖2所示,可以包括以下步驟:
步驟S210:接收企業信息系統發送的預設格式的郵件消息,並將郵件消息存儲在消息隊列中;
步驟S220:在接收到郵件發送模塊的提取消息指令時,將消息隊列中的郵件消息發送給郵件發送模塊;
步驟S230:由郵件發送模塊根據郵件消息的屬性欄位,獲取郵件消息的發送屬性類型;屬性欄位包括郵件發送類型欄位;
步驟S240:由郵件發送模塊根據發送屬性類型,將對應的郵件消息以相應的發送方式轉發給郵件伺服器。
具體而言,本發明可以通過消息中間件來實現上述步驟,使得企業信息系統可以對修改封閉,對擴展開放,以面向服務方式提供郵件轉發功能;在不修改原有信息系統郵件發送模塊的前提下,滿足用戶在實際使用中的客觀需求(例如郵件定時轉發和相似郵件合併轉發功能);本發明在企業信息系統與郵件伺服器之間添加「消息中間件」實現郵件轉發系統,來實現郵件相應的發送功能,例如:可以解決用戶頻繁收到系統郵件問題;對於功能類似的提醒郵件,在郵件發送模塊判斷合併規則,對相似郵件合併之後再轉發,大大減少了用戶收到郵件數量,使得用戶在單封郵件中接收多封郵件內容。
在一個具體的實施例中,郵件發送類型欄位為以下欄位類型中的任意一種或任意組合:定時發送欄位、合併發送欄位、自摧毀發送欄位和自定義功能發送欄位;預設格式為JSON格式。
本發明郵件轉發方法具體實施例:
為了進一步詳細說明本發明的技術方案,同時為了解決傳統技術方案難以統一應對用戶的客觀需要(如郵件定時發送、相似郵件合併發送)或自定義需求的問題,本發明還提供了一種郵件轉發方法具體實施例;圖3為本發明郵件轉發方法具體實施例的流程序列圖;如圖3所示:
1、客戶端(信息系統)以http方式發送JSON格式消息到消息中間件(AMQ)。
JSON主要欄位說明如下表格1所示:
表格1-JSON主要欄位說明表
2、消息中間件內部以JMS格式路由消息;
3、郵件發送模塊根據JSON內容,判斷其為定時發送郵件還是需要合併的郵件。如果存在Fixed-Time欄位,不存在Merge欄位,則判斷此消息以定時方式發送;如果存在Merge欄位,而不存在Fixed-Time欄位,則判斷以合併方式發送,並分別存儲到不同的資料庫臨時表中;
4、郵件發送模塊可以通過開啟定時器,實現郵件定時轉發,以及單位時間內的相似郵件合併轉發功能。
本發明郵件轉發方法實施例2,可以在企業信息系統中,實現郵件自動轉發集中管理,實現系統郵件定時轉發,高頻郵件合併轉發功能。
本發明郵件轉發系統實施例1:
基於以上方法的技術思想,同時為了解決傳統技術方案難以統一應對用戶的客觀需要(如郵件定時發送、相似郵件合併發送)或自定義需求的問題,本發明還提供了一種郵件轉發系統實施例1;圖4為本發明郵件轉發系統實施例1的結構示意圖;如圖4所示,可以包括:
消息提取單元410,用於從消息中間件的消息隊列中,提取消息中間件接收到的企業信息系統發送的預設格式的郵件消息;
獲取發送屬性類型單元420,根據郵件消息的屬性欄位屬性欄位,獲取郵件消息的發送屬性類型;屬性欄位包括郵件發送類型欄位;
發送單元430,用於根據發送屬性類型,將對應的郵件消息以相應的發送方式轉發給郵件伺服器。
在一個具體的實施例中,發送單元430可以包括:
獲取定時時間模塊432,用於根據定時發送欄位,獲取定時時間;
生成識別碼模塊434,用於生成與郵件消息對應的識別碼,並將識別碼發送給計時器;由計時器根據識別碼,在定時時間到來時,調用郵件發送模塊將郵件消息發送給郵件伺服器。
在一個具體的實施例中,發送單元430可以包括:
獲取標識模塊436,用於在郵件發送類型欄位為合併發送欄位時,根據合併發送欄位,獲取郵件消息對應的合併規則和合併標識;
查找識別碼模塊438,用於在計時器中查找是否存在與合併標識對應的識別碼:若存在,獲取識別碼;若不存在,生成與合併標識對應的識別碼,並將識別碼發送給計時器;由計時器根據識別碼和合併規則,調用郵件發送模塊將郵件消息發送給郵件伺服器。
在一個具體的實施例中,消息中間件通過REST接口接收企業信息系統發送的郵件消息;消息中間件在內部以JMS格式路由郵件消息;消息中間件為ActiveMQ或RabbitMQ。
郵件發送類型欄位為以下欄位類型中的任意一種或任意組合:定時發送欄位、合併發送欄位、自摧毀發送欄位和自定義功能發送欄位;預設格式為JSON格式。
在一個具體的實施例中,還包括存儲單元440,用於存儲郵件消息和郵件消息對應的發送屬性類型。
圖5為本發明郵件轉發系統實施例2的架構示意圖;如圖5所示,郵件轉發系統各個子模塊實現的功能如下:
1、消息中間件(ActiveMQ),向信息系統提供REST接口,系統系統把要發送的郵件內容以JSON格式發送到消息中間件隊列,具體郵件服務從消息隊列中收取郵件消息,實現郵件轉發模塊與信息系統之間的異步通信。
2、存儲服務,用於郵件消息定時轉發、合併轉發前的消息存儲,主要包括用於定時轉發以及合併轉發的控制信息和郵件消息本身,以及郵件消息本身的備份。
3、郵件服務,實現信息系統JSON格式拆解,以及MINI郵件格式的再封裝。
本發明郵件轉發系統實施例1或2,使得企業信息系統可以對修改封閉,對擴展開放,以面向服務方式提供郵件轉發功能;在不修改原有信息系統郵件發送模塊的前提下,實現郵件定時轉發和相似郵件合併轉發功能;本發明在信息系統與郵件伺服器之間添加「消息中間件」實現郵件轉發系統,來實現郵件定時轉發以及相似郵件合併轉發的功能。可以解決用戶頻繁收到系統郵件問題;對於功能類似的提醒郵件,在郵件發送模塊判斷合併規則,對相似郵件合併之後再轉發,大大減少了用戶收到郵件數量,使得用戶在單封郵件中接收多封郵件內容。
以上所述實施例的各技術特徵可以進行任意的組合,為使描述簡潔,未對上述實施例中的各個技術特徵所有可能的組合都進行描述,然而,只要這些技術特徵的組合不存在矛盾,都應當認為是本說明書記載的範圍。
以上所述實施例僅表達了本發明的幾種實施方式,其描述較為具體和詳細,但並不能因此而理解為對發明專利範圍的限制。應當指出的是,對於本領域的普通技術人員來說,在不脫離本發明構思的前提下,還可以做出若干變形和改進,這些都屬於本發明的保護範圍。因此,本發明專利的保護範圍應以所附權利要求為準。