javaMail搭建商業郵件系統的問題總結

來源:互聯網
上載者:User

  沒有做過mail之前一直以為javamail就是傳幾個參數的問題,最近加了8天8夜的班,趕一個商業郵件系統的進度,才發現郵件系統的水很深。。。 廢話不多講,直接進入主題,列出我碰到的幾個問題:

大致的功能:

 

郵件系統是linux+postfix+maildrop服務(有一個linux工程師的支援),我負責帶領的3人小組完成前端的所有開發。認證採用的LDAP方式,前端java實現是struts2+spring+hibernate,第一期功能暫時採用的IO操作來處理郵件清單(準備在郵件二期加入資料庫索引,來支援大的並發)。目前已經實現的功能有:1。基本的郵件系統邏輯流程。通訊錄以及群發支援。2。驗證許可權系統,換膚功能。3。定時發送任務,定時清理資源回收筒。4。提供信綴廣告(郵件體後的系統廣告)

注意事項:

1.商用郵件系統不僅要發,要收,還要支援多使用者,考慮到高效能的實現,以及使用者量上去後的擴充性,因此多向高手請教,規劃好一種實現方式是首要大事!目前我們的郵件系統是用java寫前台,後台郵件伺服器為Postfix,使用LDAP認證. 頁面上的操作都是直接io操作存貯在伺服器上的郵件檔案(這個實現方式估計先天性就畸形了,撐不了太久,可是一個星期要做出來還能要求什麼呢)。 個人想以後可能會將郵件儲存到資料庫,方便尋找,分庫,並且很容易通過加資料庫欄位給郵件添加一些緊急啊,非常重要之類的標示。

2.首先一個web的郵件系統,頁面上的操作非常多,邏輯也是相當複雜。如何準確抓住需求點是個關鍵,一定要約幾人充分討論好需求。比如一開始我把收件夾,資源回收筒,寄件匣列表統一對待,公用一個page,同一段action代碼。最後發現,收件夾是收件者是自己,寄件匣寄件者才是自己,如果允許郵件再這兩個目錄之間移動,顯示郵件清單時,寄件者欄顯然要出bug,修正之!

 另外,讀郵件頁面也得分“收到別人的信”與“自己的草稿”。收到的信有轉寄和回複操作,而自己的草稿顯然只能提供繼續發送操作。

還要比如pop3協議是不支援區分新舊郵件的,如何判讀收件夾信是新是舊,就看各位的高招了。

3.郵件頁面一般用frame實現,3個塊:左邊列表,上面的網站頭,中間的郵件。 這裡有個麻煩的就是中間frame操作郵件,如何讓左邊的列表欄可以動態更新新郵件標識。不能說2個新郵件,你去讀過了以後,右邊還是顯示2封新郵件。 這裡我的實現方式是中間郵件frame的頁面寫body 的onload事件:每次操作,載入中間這個頁面的時候,用onload事件去刷左邊的郵件菜單列表。

4.再就是一定要瞭解下幾種郵件傳輸的協議,知道自己在幹嘛。另外發郵件的時候,本文弄個漂亮的編輯器,讓別人寫<textarea>. MimeMessage 類裡面的欄位,方法含義需要瞭解一下,比如一個地址javax.mail.internet.InternetAddress類中會出現幾個變數,分別由不同作用。再比如Message.RecipientType,3種收件者都弄清楚了嘛? "to"----收件者 "cc"---抄送人地址 "bcc"---密送人地址

5.再就是linux上面的部署問題了。調試了2天才解決。第一就是跑Postfix進程的使用者,必須和起java虛擬機器的使用者配成同一個使用者,以免導致Postfix訪問目錄的許可權不夠,無法投遞郵件。(我們是root起得tomcat,跑的java虛擬機器,然後在java中初始化使用者目錄以後,出現Postfix一直無法投遞信件的問題,最後重裝jdk,tomcat,用maildrop那個使用者去啟動,搞定)。 第2 就是Postfix配合LDAP投遞貌似對路徑有要求,只能投遞到Maildrop/new目錄下,而且同時需要建立一個maildrop/tmp目錄,缺少了tmp就會報出許可權不夠而無法投遞的錯誤,,,估計也是要調試n久才會發現居然是少建立了一個目錄而已。玩linux的一定要仔細閱讀說明才行啊。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.