Web Mail 客戶端:EMail Client

jopen 11年前發布 | 131K 次閱讀 WebMail系統 EMail Client

簡介

EMail Client 基于 POP3SMTP 協議來實現郵件的收發功能,UI是基于在 er, esui, bat-ria 的基礎上開發的,天生具有很好的擴展性和跨平臺的特性。

如何使用

為了方便使用,提供了 Mac 下面的編譯好的版本(6.8M),可以從這里下載:http://pan.baidu.com/s/1gd1lVrl

下載解壓之后,執行:./email 即可,如果正常啟動成功,然后打開瀏覽器,訪問:http://localhost:8877 就可以看到設置頁面。

Web Mail 客戶端:EMail Client

第一次訪問的時候會自動跳轉到設置頁面,此時需要配置一些賬戶的信息,如果是 baidu.com 或者 126.com 的賬戶的話,只需要在基本設置里面填寫郵箱地址和密碼即可,下面的高級設置會自動補全。如果不是這兩個域名下面的賬戶,可能就需要自己人肉去補全相應的信 息了。

配置成功之后,點擊確定,然后會跳轉到郵件列表頁面,稍微等一會兒就可以看到最新的郵件了。

關聯網盤

在郵件列表頁面,點擊『網盤授權』的按鈕,會打開授權頁面,授權成功之后會,后續收到的郵件中如果還有附件,會自動同步到百度網盤。

需要注意的是,授權的時候,需要保證瀏覽器的地址是 http://localhost:8877,如果是其它地址,可能會失敗。

系統預覽

郵件列表

Web Mail 客戶端:EMail Client

郵件搜索

Web Mail 客戶端:EMail Client

發送郵件

Web Mail 客戶端:EMail Client

郵件瀏覽

Web Mail 客戶端:EMail Client

查看附件

先進行網盤授權,授權之后郵件的附件是自動轉存到百度云,方便預覽。

Web Mail 客戶端:EMail Client

Web Mail 客戶端:EMail Client

系統架構圖

Web Mail 客戶端:EMail Client

BACKEND

  1. 基于 POP3 協議跟郵件服務器交互,完成收取郵件的功能
  2. 收取郵件之后把解析出來的元信息(例如:標題,發件人,日期等等)存儲到數據,原始的文件存儲到 Raw 目錄。

FRONTEND

  1. 基于 SMTP 協議跟郵件服務器交互,完成發送郵件的功能
  2. 實現了一個 Web Server,響應瀏覽器發送過來的請求,返回合適的 JSON 數據,從而在 ER App 里面展示郵件的信息。

環境搭建

基于上面的介紹,搭建環境之前需要有一些依賴的服務需要準備好:

  1. git
  2. mysql 或者 sqlite
  3. golang

注意事項

Windows下面安裝可能會遇到很多問題,推薦在 Linux 或者 Mac 下面嘗試

git

檢出代碼:git clone http://gitlab.baidu.com/baidu/email.git

mysql

TODO 待完善

golang

TODO 待完善

  1. 下載依賴包:git clone http://gitlab.baidu.com/liyubei/gopath.git
  2. 設置GOPATH環境變量:export GOPATH=$(pwd)/gopath
  3. 編譯一下
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
  1. filter.stop類型是bool,如果設置為true,當符合這個過濾器的時候,就不再執行后續的過濾器
  2. filter.condition.match取值范圍是Any或者All,注意大小寫。
  3. 現在可用的actionLabel, MarkAsRead, MarkAsDelete,后續如果想完善的話,可以直接在src/server/base/action.go里面去實現。

FAQ

為什么不獨立一個服務來訪問,而是需要使用者自己來安裝?

的確是的,獨立服務訪問會方便很多,但是因為收取和發送郵件都需要用戶名和密碼,獨立服務之后必定要存儲這些信息,很有可能會出安全隱患,所以不提供一個獨立的服務。

跟 email.baidu.com 有啥區別?

本質功能是一樣的,雖然有些功能還沒有 email.baidu.com 完善,有些功能比 email.baidu.com 更易用(例如發送和瀏覽郵件的功能),而且定制性和擴展性更好,希望更多的童鞋參與進來。

為什么有些郵件收取不了呢?

這是因為 POP3 協議的限制,沒有文件夾的概念。 如果在服務器上保存了 Outlook 的過濾器,可能會把一些郵件放到 非Inbox 文件夾下面,此時用 POP3 就無法收取了,建議停用所有的過濾器(非刪除),這樣子就能收取所有的有郵件了。

項目主頁:http://www.baiduhome.net/lib/view/home/1415259420230

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!