Web Mail 客戶端:EMail Client
簡介
EMail Client 基于 POP3 和 SMTP 協議來實現郵件的收發功能,UI是基于在 er, esui, bat-ria 的基礎上開發的,天生具有很好的擴展性和跨平臺的特性。
如何使用
為了方便使用,提供了 Mac 下面的編譯好的版本(6.8M),可以從這里下載:http://pan.baidu.com/s/1gd1lVrl
下載解壓之后,執行:./email 即可,如果正常啟動成功,然后打開瀏覽器,訪問:http://localhost:8877 就可以看到設置頁面。
第一次訪問的時候會自動跳轉到設置頁面,此時需要配置一些賬戶的信息,如果是 baidu.com 或者 126.com 的賬戶的話,只需要在基本設置里面填寫郵箱地址和密碼即可,下面的高級設置會自動補全。如果不是這兩個域名下面的賬戶,可能就需要自己人肉去補全相應的信 息了。
配置成功之后,點擊確定,然后會跳轉到郵件列表頁面,稍微等一會兒就可以看到最新的郵件了。
關聯網盤
在郵件列表頁面,點擊『網盤授權』的按鈕,會打開授權頁面,授權成功之后會,后續收到的郵件中如果還有附件,會自動同步到百度網盤。
需要注意的是,授權的時候,需要保證瀏覽器的地址是 http://localhost:8877,如果是其它地址,可能會失敗。
系統預覽
郵件列表
郵件搜索
發送郵件
郵件瀏覽
查看附件
先進行網盤授權,授權之后郵件的附件是自動轉存到百度云,方便預覽。
系統架構圖
BACKEND
- 基于 POP3 協議跟郵件服務器交互,完成收取郵件的功能
- 收取郵件之后把解析出來的元信息(例如:標題,發件人,日期等等)存儲到數據,原始的文件存儲到 Raw 目錄。
FRONTEND
- 基于 SMTP 協議跟郵件服務器交互,完成發送郵件的功能
- 實現了一個 Web Server,響應瀏覽器發送過來的請求,返回合適的 JSON 數據,從而在 ER App 里面展示郵件的信息。
環境搭建
基于上面的介紹,搭建環境之前需要有一些依賴的服務需要準備好:
注意事項
Windows下面安裝可能會遇到很多問題,推薦在 Linux 或者 Mac 下面嘗試
git
檢出代碼:git clone http://gitlab.baidu.com/baidu/email.git
mysql
TODO 待完善
golang
TODO 待完善
- 下載依賴包:
git clone http://gitlab.baidu.com/liyubei/gopath.git - 設置
GOPATH環境變量:export GOPATH=$(pwd)/gopath - 編譯一下
go install code.google.com/p/go.net/publicsuffix
go install github.com/alexcesaro/mail/quotedprintable
go install github.com/dustin/go-humanize
go install github.com/gorilla/schema
go install github.com/microcosm-cc/bluemonday
go install github.com/op/go-logging
go install github.com/qiniu/iconv
go install github.com/saintfish/chardet
go install github.com/stretchr/testify/assert
go install github.com/go-sql-driver/mysql
go install github.com/mattn/go-sqlite3
go install github.com/bytbox/go-pop3
go install gopkg.in/yaml.v1 使用jumbo
TODO 待完善
如果在開發機使用 jumbo 安裝的話,可以執行如下的命令來部署環境:
jumbo add-repo ftp://st01-arch-platform00.st01.baidu.com/home/bambi/repo/tmp
jumbo install sun-java6 go mysql nodejs
export PATH=${JUMBO_ROOT}/opt/sun-java6/bin:$PATH
npm i -g edp edp-webserver --registry=http://npm.baidu.com 啟動服務
TODO 待完善
過濾器
TODO 待完善
郵件的過濾器主要是通過filters.yml來配置完成的,可以把filters.example.yml拷貝為filters.yml,進行一些調整來符合自己的需求。調整的時候參考現有的內容即可。常見的一個過濾器結構如下:
- filter:
name: 郵件列表/w3.org
stop: true
condition:
match: Any
rules:
- [SentTo, Contains, '@w3.org']
- [SentTo, Contains, '@lists.css-discuss.org']
action:
Label: 郵件列表/w3.org filter.stop類型是bool,如果設置為true,當符合這個過濾器的時候,就不再執行后續的過濾器filter.condition.match取值范圍是Any或者All,注意大小寫。- 現在可用的
action有Label,MarkAsRead,MarkAsDelete,后續如果想完善的話,可以直接在src/server/base/action.go里面去實現。
FAQ
為什么不獨立一個服務來訪問,而是需要使用者自己來安裝?
的確是的,獨立服務訪問會方便很多,但是因為收取和發送郵件都需要用戶名和密碼,獨立服務之后必定要存儲這些信息,很有可能會出安全隱患,所以不提供一個獨立的服務。
跟 email.baidu.com 有啥區別?
本質功能是一樣的,雖然有些功能還沒有 email.baidu.com 完善,有些功能比 email.baidu.com 更易用(例如發送和瀏覽郵件的功能),而且定制性和擴展性更好,希望更多的童鞋參與進來。
為什么有些郵件收取不了呢?
這是因為 POP3 協議的限制,沒有文件夾的概念。 如果在服務器上保存了 Outlook 的過濾器,可能會把一些郵件放到 非Inbox 文件夾下面,此時用 POP3 就無法收取了,建議停用所有的過濾器(非刪除),這樣子就能收取所有的有郵件了。







