• Tải nội dung email có kèm file • Tải nội dung email có kèm file, có lưu file xuống máy cục bộ của client 5 Quản lý trạng thái email đã đọc/ chưa đọc Hoàn thành 6 Xử lý lọc email: • L
Trang 1ĐẠ I HỌC QU C GIA TP H CHÍ MINH Ố Ồ
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
CLIENT
- CHUNG THÙY LINH
Nhóm 25:
22120193 Nguy– ễn Hoàn Long
22120208 – Hoàng Hồ Nhật Minh
22120216 – Bùi Tấn Thành Nam
Trang 2M c l c ụ ụ
A Tổng quan nhóm 3
Thông tin nhóm 3
Thông tin đồ án 3
Phân chia công việc 3
Mức độ hoàn thành công việc 3
B Báo cáo đồ án 4
I Môi trường l ập trình, Framework và thư viện hỗ trợ: 4
II K ch b n giao tiị ả ếp chương trình: 5
1 Giao thức trao đổi: 5
2 Cấu trúc thông điệp: 6
3 Kiểu dữ liệu của thông điệp: 7
III Hướng dẫn sử dụng tính năng: 8
1 Tổ chức file Config: 8
2 Đăng Nhập: 8
3 Tảl email và Xử lý lọc email: 9
4 Tự động tải email: 9
5 Gửi Email: 10
6 Xem Danh Sách Email: 10
7 Đăng Xuất: 10
Tài liệu tham khảo 11
Trang 3A
Tổng quan nhóm
Thông tin nhóm
22120193 Nguyễn Hoàn Long 22120193@student.hcmus.edu
22120208 Hoàng Hồ Nhật Minh 22120208@student.hcmus.edu
22120216 Bùi Tấn Thành Nam 22120216@student.hcmus.edu
Thông tin đồ án
Công cụ sử d ng: VSCode, Test-mail-server, Words, Google Drive ụ
Phân chia công việc
H ọ Tên MSSV Nhiệm v ụ
Nguyễn Hoàn Long 22120193 Viết báo cáo
Hoàng Hồ Nhật Minh 22120208 Hỗ trợ chỉnh sửa báo cáo, thực hiệ chức n
năng gửi file và đọc file Thiế ết k giao diện đọc email
Bùi Tấn Thành Nam 22120216 Viết báo cáo, thực hiện các chức năng Thiết
k giao diế ện đăng nhập, gửi email
Mức độ hoàn thành công việ c
1 Gửi được Email với TO và CC:
• Gửi email đến một hoặc nhiều địa chỉ người nhận (TO)
• Gửi email đến một hoặc nhiều địa chỉ người nhận (CC)
Hoàn thành
2 Gửi được Email với BCC
3 Gửi được attached file ( dung lượng file <= 3MB)
• Gửi được file *.txt
• Gửi được các định dạng file như: *.docx, *.pdf, *.jpg,
*.zip,
• Gửi được nhiều file đính kèm trong cùng 1 email
• Có giới hạn dung lượng file gửi
Hoàn thành
4 Tải được các email về mail client từ mailbox của Server
Tải nội dung email không kèm file
Hoàn thành
Trang 4• Tải nội dung email có kèm file
• Tải nội dung email có kèm file, có lưu file xuống máy
cục bộ của client
5 Quản lý trạng thái email (đã đọc/ chưa đọc) Hoàn thành
6 Xử lý lọc email:
• Lọc email dựa trên địa chỉ người gửi
• Lọc email dựa trên subject
• Lọc email dựa trên nội dung
• Di chuyển email vào thư mục cụ thể/ Spam
Hoàn thành
7 Xử lý tự độ ng t i email t ả ừ Mailbox theo thời gian cấu hình
8 Tổ chức file config:
• Có sử dụng file config dạng file có cấu trúc json
Hoàn thành
B
Báo cáo đồ án
I Môi trườ ng l ập trình , Framework và thư viện
hỗ trợ:
- Chương trình Email Client đượ ập trình bằng ngôn ngữ Python trên hệc l điều hành Windows và được thực thi trên cùng nền tảng ngôn ngữ và hệ điều hành
- Trong quá trình triển khai, các framework và thư viện được sử dụng từ ngôn
ng lữ ập trình Python cung cấp Dưới đây là các thư viện và framework đã được
s d ng:ử ụ
pop3_operations và smtp_operations: Đây là các module tự định
nghĩa, có thể được giả định rằng chúng chứa các hàm để thực hiện các thao tác POP3 và SMTP như kết nối, đăng nhập, gửi và nhận email
email: Đây là một module tích hợp trong Python để làm việc với định dạng email, sử dụng các lớp như MIMEMultipart MIMEText MIMEBase, ,
để tạo và xử lý các phần của email
fuzzywuzzy: Thư viện này được sử dụng để so sánh nội dung của các email để xác định xem chúng có phải là trùng lặp hay không
Trang 5binascii: Sử dụng để xử lý lỗi khi giải mã base64
os: Sử dụng để thực hiện các thao tác trên hệ thống tệp tin như tạo thư mục, kiểm tra sự tồn tại của tệp tin
re: Sử dụng để thực hiện các phép so khớp biểu thức chính quy, ví dụ như để trích xuất thông tin từ nội dung email
base64: Được sử dụng để giải mã base64 khi xử lý các file đính kèm datetime: Sử dụng để định dạng thông tin thời gian trong email time: Được sử dụng để định dạng timestamp và kiểm soát thời gian trong việc gửi email
binascii: Sử dụng để xử lý lỗi khi giải mã base64
- CHÚ Ý: Thư viện fuzzywuzzy được sử dụng bằng cách gõ dòng lệnh
“pip install fuzzywuzzy” cở ửa sổ terminal
II Kịch bản giao tiếp chương trình:
1 Giao th ức trao đổi:
Chương trình sử dụng 2 giao thức chính để trao đổi dữ liệu với máy chủ:
- SMTP (Simple Mail Transfer Protocol) : S dử ụng TCP để truyền thông điệp email m t ộ cách tin cậ ừ y t client đến cổng server Truyền trực tiếp t ừ người nhận đến server
Quá trình gửi email được chia thành 3 giai đoạn:
a) Bắ t tay (chào h ỏi):
Chương trình sử dụng hàm connect_smtp_server để thiết lập kết nối với máy chủ SMTP
Gửi lệnh EHLO để bắt đầu phiên giao tiếp và xác định sẵn sàng gửi email
b) Truyền thông điệp:
Sử dụng MAIL FORM để chỉ định địa chỉ email người gửi
Dùng RCPT_TO để xác định địa chỉ của người nhận
Trang 6 Gửi lệnh DATA để bắt đầu truyền dữ liệu email Dữ liệu email được truyền dưới dạng chuỗi, bao gồm tiêu đề, nội dung, và thông tin đính kèm nếu có
c) Đóng kết nối:
Gửi lệnh QUIT để kết thúc phiên làm việc với máy chủ SMTP sau khi
đã gửi xong email
- POP3 (Post Office Protocol version 3): là giao thức tầng ứng dụng dùng để
lấy thư điệ ử ừ cácn t t server mail bằng cách kết nối TCP/IP Đây là một giao thức nhận email đã có từ rất lâu, khi mà máy tính còn bị giới hạn bởi tốc độ, băng thông
Quá trình l y ấ email được chia thành 2 giai đoạn:
a) Giai đoạn kiểm tra đăng nhâp :
Máy khách mở một kết nối TCP với máy chủ trên cổng
Máy chủ trả lời với một thông điệp chào mừng, thường bắt đầu bằng "OK"
ho c "+OK" ặ
Giao tiếp bắt đầu bằng việc gửi lệnh USER để xác thực người dùng
Gửi thông điệp PASS để xác thực mật khẩu và đăng nhập vào tài khoản người dùng
b) Giai đoạn lấy email :
Nếu đăng nhập thành công, chương trình tiếp tục gửi lệnh STAT để kiểm tra số lượng email trong hộp thư
Gửi lệnh LIST để lấy danh sách các email có sẵn và kích thước của chúng
Gửi lệnh RETR để ấ l y nội dung của m t email c thể dộ ụ ựa trên email id
Gửi lệnh QUIT để thoát khỏi phiên làm việc POP3 Đóng socket sau khi
gửi lệnh QUIT
2 Cấu trúc thông điệ p:
Định dạng thông điệp email c a SMTP (Simple Mail Transfer Protocol) dủ ựa trên tiêu chuẩn quy định MIME, hay Multipurpose Internet Mail Extensions, là
một tiêu chuẩn được sử ụng để mô tả ộ d n i dung của các tài liệu đa phương tiện, chủ yếu là qua email Cấu trúc thông điệp MIME được xác định trong các tiêu chuẩn được mô tả trong RFC 2045 đến RFC 2049 Dưới đây là một tóm tắt về cấu trúc thông điệp MIME:
- Header:
Trang 7 Dòng Header: Chứa các dòng thông tin về email như người gửi, người
nh n, ch ậ ủ đề, ngày gửi, và nhiều thông tin khác Mỗi dòng header phải k t ế thúc bằng d u xuấ ống dòng (\r\n)
Một số header ph biổ ến:
• From: Người gửi email
• To: Người nhận email
• Subject: Chủ đề ủ c a email
• Cc: Người nhận được copy (chỉ để thông báo, không ảnh hưởng đến việc gửi)
• Bcc: Người nhận được copy ẩn (không hiển thị cho các người
nhận khác)
• Date: Ngày và giờ gửi email
• Subject: Tiêu đề của email
- Nội Dung (Body):
Nội dung email được đặt sau phần header và được ngăn cách từ header
bằng dòng trống (\r\n\r\n)
Nội dung có th là ể văn bản thuần (text/plain), được mã hóa v i bảng mã ớ ASCII (us-ascii) và sử dụng phương thức mã hóa 7bit
Phần th ứ hai là tệp đính kèm , được mã hóa dưới dạng base64
- Dạng Thông Điệp:
Thông điệp có thể có nhiều phần, mỗi phần có một loại nội dung khác nhau M i n i dung sỗ ộ ẽ được ngăn cách nhau bằng “boundary”
Mỗi phần của thông điệp có thể có các header MIME riêng, chẳng h n ạ như Content-Type, Content-Disposition, và Content-Transfer-Encoding
- Dòng Kết Thúc:
Các dòng trong email, bao gồm cả header và nội dung, phải kết thúc
bằng dòng trống (\r\n\r\n)
3 Kiểu dữ liệu của thông điệ p:
Kiểu d u cữ liệ ủa thông điệp email được quy định bởi tiêu chuẩn MIME, cung cấp một cách linh hoạt và chuẩn hóa để ể bi u diễn và truyền tải thông điệp qua hệ thống email khác nhau
- Text và Plain text: text/plain: Đây là loạ ội dung đượi n c sử dụng cho văn
b n thuả ần, không có định dạng đặc biệt Nó có thể chứa thông điệp văn bản
d ng ASCII ho c Unicode Ki u d ạ ặ ể ữ liệu này được sử ụ d ng n i dung cở ộ ủa email
- Base64: thường được sử dụng để biểu diễn dữ liệu nhị phân một cách an toàn trong các ngữ cảnh như email, các giao thức truyền tải khác Khi cần truyền
tải hoặc lưu trữ ữ liệ d u nh ị phân (như hình ảnh, âm thanh), nó có thể được mã
Trang 8hóa thành chuỗi base64 để đảm bảo tính nhất quán và an toàn trong quá trình truyền tả i
III Hướng dẫn sử dụng tính năng:
Chương trình được thiết kế giao tiếp với Mail server Mail client kết nối đến Server để gửi email (SMTP) và lấy email trong mailbox (POP3)
Phần Mail Server bạn sẽ sử dụng: Test mail server
1 Tổ chức file Config:
Tổ chứ file config với “General:” và “Filter” Để cũng cấp thông tin thực hiện
kết nối với Mail Server và cho phép người dùng phân loại email vào các folder cụ thể theo cấu hình của file config
- General: gồm MailServer, POP3, SMTP, Autoload
Ví dụ "MailServer": "127.0.0.1", "SMTP": 2225, POP3": 3335,
"Autoload": 15
- Filter: gồm lọc email theo địa chỉ người gửi, tiêu đề, nội dung và lọc email spam
Ví dụ: Filter: "From": ["nambui@ahihi.com", "ahuu@testing.com"],
"ToFolder": "Test
"Subject": ["urgent", "ASAP"],
"SubjectFolder": "Important"
2 Đăng Nhập:
- Chạy chương trình và chọn "Đăng nhập"
- Nhập địa chỉ email và mật khẩu
Trang 93 Tảl email và Xử lý lọ c email:
- Các email được tải về mail client từ mailbox của Server sau khi đăng nhập Chương trình sẽ kiểm ra tải khoản email có email mới không, Nếu có, chương trình thực hiện tải email về mail client
- Sau khi tải email, chương trình sẽ xử lý lọc email dựa trên địa chỉ người gửi, subject, nội dung Di chuyển các email vào các thư mục để lưu
4 Tự động tải email:
- Ở đầu chương trình khi ta đăng nhập thì chương trình sẽ kiểm tra và tải các email mới của tài khoản đăng nhập
- Với chức năng này, trong quá trình sự dụng chương trình email sẽ được kiểm tra và tải về liên tục sau khoảng thời gian được quy định sẵn
Trang 10- Điều này giúp chương trình, đảm bảo được email gửi tới người dùng sẽ cập nhật liên tục
- Cấu hình thời gian được quy định trong file config.json
5 Gửi Email:
- Chọn "Gửi Email"
- Nhập thông tin người nhận, tiêu đề, nội dung và đính kèm (nếu có)
- Nếu muốn gửi file đính kèm, chọn “Chọn File” sau cho tìm tới thư mục chưa file cần đính kèm
6 Xem Danh Sách Email:
- Chọn "Xem Danh Sách Email"
- Chọn thư mục và xem danh sách email
- Chọn email để đọc nội dung
7 Đăng Xuất:
Trang 11Chọn "Đăng xuất" khi kết thúc sử dụng
Tài liệu tham khảo
- Chat GPT: https://chat.openai.com/
- Thực hiện giao diện: tkinter Python interface to Tcl/Tk Python 3.12.1 — — documentation
- SMTP: Simple Mail Transfer Protocol (SMTP) - GeeksforGeeks
- https://gaia.cs.umass.edu/kurose_ross/programming/Python_code_only/SMTP_ programming_lab_only.pdf
- Một số ế ki n thức về thư viện tkinter:
https://hiepsiit.com/detail/python/giaodien-tkinter
- Stackoverflow: https://stackoverflow.com
- Copilot AI: Microsoft Copilot: Your everyday AI companion
- https://docs.python.org/3/library/threading.html