Ph
lc
1.
Thông tin nhóm
.........................................................................................................................
3
2.
Phân công công vic
................................................................................................................
3
3.
Đánh giá mc độ hoàn thành
...............................................................................................
4
4.
ng dn s dng các tính năng chương trình
............................................................
5
a.
Chc năng SEND EMAIL ...................................................................................................... 5
b.
Chc năng SEE LIST EMAIL ................................................................................................ 6
5.
Kch bn giao tiếp ca chương trình
...................................................................................
8
a.
Gi email đi dùng giao thc SMTP
.................................................................................
8
b.
Ti mt email v t Mail server dùng giao thc POP3.
......................................
13
6.
Môi trường lp trình và các framework h tr để thc thi ng dng
..................
14
7.
Tài liu tham kho
.................................................................................................................
14
2
1.
Thông tin nhóm
ST
T
MSSV
H tên
Email
1
221202
42
Minhnha1101@gmail.com
2
221202
49
tranngocnhannt2004@gm
ail.com
3
221202
65
Nguyn
Phong
Thanh
ngthanhphong0817@gmai
l.com
2.
Phân công công vic
STT
Người thc hin
Ni dung công vic
1
Trn Ngc Nhân
To n cho chương trình.
Ti các email không m file
kèm file.
Qun trng thái đọc file.
Lc email đưa vào c folder.
T chc x file config phc v
cho công vic lc mail.
T động ti email mi 10s.
2
Nguyn
Thanh
Phong
Gi mail không kèm file đính kèm.
Gi email kèm file đính kèm định
dng *.txt.
Gii hn dung ng file gi.
X lý ni dung email ti v trên màn
hình console.
Kim tra, phát hin li.
3
Nguyn Minh Nhã
Gi email vi CC BCC.
Gi email đính kèm file vi nhiu định
dng khác nhau.
Gi
đưc
nhiu
file
trong
ng
1
email.
3
Lưu file t email ti v máy cc b.
T chc và x lý đc file config cha
thông tin User, Port, Mailserver,
Viết báo cáo.
3.
Đánh giá mc độ hoàn thành
ST
Yêu cu
Mc
độ
Ghi chú
T
hoàn thành
1
Gửi được email (dùng
giao thc SMTP): To, CC,
BCC (khi gi BCC thì
những ngưi nhn liên
quan (To, CC) s không
biết có gi BCC), gi
file đínhm email.
100%
Hoàn thành
đúng các yêu
cầu, chưa
phát hin ra
li.
2
Tải được email t Mail
server (dùng giao thc
POP3): Tải đủ đúng.
Không ti li nhng
email đã tải trước đó,
đảm bo yêu cu này c
khi tt/ m li Mail
Client.
100%
Hoàn thành
đúng các yêu
cầu, chưa
phát hin ra
li.
3
Cho phép ngưi dùng
phân loi email vào các
folder c th theo cu
hình ca file config
(phân loại theo địa ch
ngưi gi, theo subject,
hoc t khóa trong ni
dung email). Mc đnh
email đưc ti v client
luôn thuc folder Inbox
100%
Hoàn thành
đúng các yêu
cầu, chưa
phát hin ra
li.
4
nếu không phù hp bt
k kết qu filter nào.
4
Cho phép lc các t
khóa spam t subject và
ni dung email, di
chuyn c spam email
vào thư mục Spam khi
ly email v t Mailbox
ca Server.
100%
Hoàn thành
đúng các yêu
cầu, chưa
phát hin ra
li.
5
Quản được trng thái
email (đã đọc/ chưa
đọc), đảm bo vn đúng
khi tt/m chương trình
Mail Client ca mình.
100%
Hoàn thành
đúng các yêu
cầu, chưa
phát hin ra
li.
6
T động ti email trong
mailbox v mi 10s mt
ln, cu hình thi gian
t động ti email này
trong file config.
100%
Hoàn thành
đúng các yêu
cầu, chưa
phát hin ra
li.
4.
ng dn s dng các tính năng chương trình
Khi khởi động chương trình, màn hình s hin MENU vi 3 la
chọn SEND EMAIL, SEND LIST EMAIL EXIT. Ni dùng s
nhp s tương ứng đ chn chức năng.
5
a.
Chc năng SEND EMAIL
Sau khi chn chức năng SEND EMAIL, ngưi dùng lần lượt
nhp các thông tin được yêu cu( nếu không nhp thì bm
Enter để b qua) bao gm:
-
TO, CC, BCC: nhập địa ch email ngưi nhn, các email
ngăn cách nhau bi du cách.
-
Subject: Tiêu đề email
-
Content: Ni dung email, kết thúc ni dung vi du “;
6
Sau đó s xut hin dòng ch hi bn mun gi file đính
kèm không, nhấn “1” để gửi m file, “2” đ chn không.
Sau đó nhp s ng file mun gi, tiếp đến nhp đường
dn ti file bn cn gi, tổng dung ng các file phi nh
hơn hoc bng 3MB, nếu không bn s đưc thông báo
phi nhp lại đưng dn các file. Thông o hin n báo
hiu vic gi email đã thành công.
b.
Chc năng SEE LIST EMAIL
Sau khi chn chức năng SEE LIST EMAIL, s xut hin các
folder, ngưi dùng nhp s tương ứng đ xem email trong
folder cn xem, nhp
“0”
để thoát ra MENU.
7
Sau khi chn folder, danh sách email s xut hin, bm s
tương ng để la chn email mun bn mun xem. Sau khi
chn, ni dung email s xut hin kèm thông báo có file
đính kèm hay không kèm sanh sách c file nếu có. Bn
nhp “1” nếu mun lưu các file hoc 2” nếu không.
Nếu bn chn lưu file, hãy nhp đưng dn bn mun
file được lưu về các file đính kèm s được lưu về.
8
Sau khi đc, mail ca bn s đưc đánh dấu là đã đc. Bn
vn có th tiếp tục lưu file vào thư mc khác.
5.
Kch bn giao tiếp ca chương trình
a. Gi email đi dùng giao thc SMTP
-
B1: Kết ni.
Mail Client thiết lp kết ni vi Mail Server bng Socket
thông qua cng 2225 (hoc cng khác, tùy vào cu hình).
-
B2: Gi lnh EHLO.
9
Mail Client gi thôngo đến Mail Server v s hin din
ca nó thông qua lnh EHLO [127.0.0.1] (hoc đa ch IP khác,
tùy vào cu hình).
-
B3: Chuyn thông đip.
Sau khi thiết lp kết ni xác nhn danh tính, Mail
Client gi tới Mail Server đa ch email của người gi thông qua
lnh MAIL FROM RCPT TO.
-
B4: Truyn ni dung.
Mail Client gi ti Mail Server lệnh DATA để yêu cu gi
d liu thư (văn bn, tp đính kèm, vv.), sau khi nhn phn hi
354 enter mail, end with line containing only “.”, Mail Client
bắt đầu gi ni dung email tng ng mt, cu trúc gm 3
phn chính phần đầu( cha thông tin cơ bản ca mail), phn
content( cha ni dung ca email), phn d liu file( cha ni
dung file đính kém đã đưc mã hóa). Phn d liu này phi
đưc kết thúc bi 1 dòng ch bào gm “.”
10
Phần đu gm c dòng Message-ID( mã định danh duy
nht ca email), Date( giờ, ngày, tháng, năm gi email), MIME-
Version( phiên bn MIME s dng), User-Agent( ng dng gi
thư đang s dng), Content-Language( ngôn ng), To( địa ch
email ngưi nhn, nếu nhiu s ngăn cách bng du “,”),
From( địa ch email ngưi gi), Subject( tiêu đ ca email).
Nếu email đưc gi có đính kèm file, mt chui kí t( t
quy định) được s dng để đặt ranh gii gia c phn khác
nhau giúp máy ch t c chương trình đc t hiu cách
các phn ca thư đưc tách bit. Lúc này dòng đầu tiên đưc
gi cho Mail Server s Content-Type: multipart/mixed;
boundary= “//Tự quy định//” , khi gi d liu, mt du " --"
11
được thêm o đầu mi boundary, và du "--" được thêm vào
cuối ng để ch định s kết thúc ca email. Dòng This is a
multi-part message in MIME format thông báo cho Mail Server
rằng email đó chứa nhiu phn khác nhau.
Đối vi phn ni dung email, phn header bao gm
Content-Type:… xác định kiu ca ni dung gửi văn bản,
Content-Transfer-Encoding: xác định cách biu din
truyn ti ni dung email. Cách mt dòng so vi phn header
phn ni dung email bn mun gi đi.
Đối vi phần file đính kèm, phần header bao gm
Content-Type:… xác định kiu ca tệp đính kèm; Content-
Disposition:… xác định cách x ni dung, bao gm c tên
tệp đính kèm; Content-Transfer-Encoding:… xác định phương
pháp mã hóa s dụng để truyn ti d liu ca tệp đính kèm(
đây base64). Cách một ng sau đó phn ni dung email
đã được mã hóa theo phương pháp base64.
12
-B5: Kết thúc phiên.
13
Khi quá trình truyn ti hoàn tt, kết ni gia Mail Client
và Mail Server s được đóng.
b.
Ti mt email v t Mail server dùng giao thc POP3.
-
B1: Kết ni.
Mail Client thiết lp kết ni vi Mail Server bng Socket
thông qua cng 3335 (hoc cng khác, tùy vào cu hình).
-
B2: Chng thc.
Ngưi dùng cung cp thông tin đăng nhp (tên ngưi
dùng mt khẩu) để xác thc thông qua lnh USER PASS.
Mail Server tr v +OK nếu xác thc thành công.
-
B3:Bt đu phiên ly thông tin v các email.
Mail Client ly s ợng thư tổng kích thưc ca chúng
bng bnh STAT. Mail Server tr v +OK <s ng thư> <tng
kích thưc>
Mail Client s dng lnh LIST đ lấy danh sách các thư
kèm dung lượng ca từng thư lần lượt theo s th t. Mail
Server s tr v ln lượt <s th t thư> <kích thước thư>.
Chương trình s kim tra thc hin ly ni dung ca
thư mới va nhn bng lnh RETR <s th t thư>. Mail
Server tr v thông tin, ni dung email.
14
-
B4: Kết thúc phiên.
Mail client kết thúc phiên đăng xut bng lnh QUIT.
6.
Môi trường lp trình c framework h tr đ thc thi ng
dng
Chương trình đưc viết bng ngôn ng C++ trên h điu hành
Windows.
15
7.
Tài liu tham kho
Chat Openai: https://chat.openai.com
SMTP command: https://mailtrap.io/blog/smtp-commands-and-
responses/
POP3 command: https://electrictoolbox.com/pop3-commands/
How to send email with an attachment from C++ through
SMTP?
Cùng tìm hiu v Base64 encoding
Json gì? Nhng điu lp trình viên nên biết v Json File
C++ Network Programming Part 1: Sockets
C++ Network Programming Part 2: TCP & UDP
16

Preview text:

Phụ lục
1. Thông tin nhóm ......................................................................................................................... 3
2. Phân công công việc ................................................................................................................ 3
3. Đánh giá mức độ hoàn thành ............................................................................................... 4
4. Hướng dẫn sử dụng các tính năng chương trình ............................................................ 5
a. Chức năng SEND EMAIL ...................................................................................................... 5
b. Chức năng SEE LIST EMAIL ................................................................................................ 6
5. Kịch bản giao tiếp của chương trình ................................................................................... 8
a. Gửi email đi dùng giao thức SMTP ................................................................................. 8
b. Tải một email về từ Mail server dùng giao thức POP3. ...................................... 13
6. Môi trường lập trình và các framework hỗ trợ để thực thi ứng dụng .................. 14
7. Tài liệu tham khảo ................................................................................................................. 14 2 1. Thông tin nhóm ST MSSV Họ và tên Email T 1 221202 Nguyễn Minh Nhã Minhnha1101@gmail.com 42 2 221202 Trần Ngọc Nhân tranngocnhannt2004@gm 49 ail.com 3 221202 Nguyễn Thanh ngthanhphong0817@gmai 65 Phong l.com 2. Phân công công việc
STT Người thực hiện
Nội dung công việc 1 Trần Ngọc Nhân
Tạo sườn cho chương trình.
Tải các email không kèm file và có kèm file.
Quản lý trạng thái đọc file.
Lọc email và đưa vào các folder.
Tổ chức và xử lý file config phục vụ cho công việc lọc mail.
Tự động tải email mỗi 10s. 2 Nguyễn
Thanh Gửi mail không kèm file đính kèm. Phong
Gửi email kèm file đính kèm định dạng *.txt.
Giới hạn dung lượng file gửi.
Xử lý nội dung email tải về trên màn hình console.
Kiểm tra, phát hiện lỗi. 3
Nguyễn Minh Nhã Gửi email với CC và BCC.
Gửi email đính kèm file với nhiều định dạng khác nhau.
Gửi được nhiều file trong cùng 1 email. 3
Lưu file từ email tải về máy cục bộ.
Tổ chức và xử lý đọc file config chứa
thông tin User, Port, Mailserver,… Viết báo cáo.
3. Đánh giá mức độ hoàn thành ST Yêu cầu Mức độ Ghi chú T hoàn thành 1
Gửi được email (dùng 100% Hoàn thành giao thức SMTP): To, CC, đúng các yêu BCC (khi gửi BCC thì cầu, chưa những người nhận liên phát hiện ra quan (To, CC) sẽ không lỗi.
biết là có gửi BCC), gửi file đính kèm email. 2
Tải được email từ Mail 100% Hoàn thành server (dùng giao thức đúng các yêu
POP3): Tải đủ và đúng. cầu, chưa Không tải lại những phát hiện ra
email đã tải trước đó, lỗi.
đảm bảo yêu cầu này cả khi tắt/ mở lại Mail Client. 3 Cho phép người dùng 100% Hoàn thành phân loại email vào các đúng các yêu folder cụ thể theo cấu cầu, chưa hình của file config phát hiện ra
(phân loại theo địa chỉ lỗi. người gửi, theo subject, hoặc từ khóa trong nội dung email). Mặc định
email được tải về client luôn thuộc folder Inbox 4 nếu không phù hợp bất kỳ kết quả filter nào. 4
Cho phép lọc các từ 100% Hoàn thành khóa spam từ subject và đúng các yêu nội dung email, di cầu, chưa chuyển các spam email phát hiện ra vào thư mục Spam khi lỗi. lấy email về từ Mailbox của Server. 5
Quản lý được trạng thái 100% Hoàn thành email (đã đọc/ chưa đúng các yêu
đọc), đảm bảo vẫn đúng cầu, chưa
khi tắt/mở chương trình phát hiện ra Mail Client của mình. lỗi. 6
Tự động tải email trong 100% Hoàn thành mailbox về mỗi 10s một đúng các yêu
lần, cấu hình thời gian cầu, chưa tự động tải email này phát hiện ra trong file config. lỗi.
4. Hướng dẫn sử dụng các tính năng chương trình
Khi khởi động chương trình, màn hình sẽ hiện MENU với 3 lựa
chọn SEND EMAIL, SEND LIST EMAIL và EXIT. Người dùng sẽ
nhập số tương ứng để chọn chức năng. 5 a. Chức năng SEND EMAIL
Sau khi chọn chức năng SEND EMAIL, người dùng lần lượt
nhập các thông tin được yêu cầu( nếu không nhập thì bấm
Enter để bỏ qua) bao gồm:
- TO, CC, BCC: nhập địa chỉ email người nhận, các email
ngăn cách nhau bới dấu cách. - Subject: Tiêu đề email
- Content: Nội dung email, kết thúc nội dung với dấu “;” 6
Sau đó sẽ xuất hiện dòng chữ hỏi bạn có muốn gửi file đính
kèm không, nhấn “1” để gửi kèm file, “2” để chọn không.
Sau đó nhập số lượng file muốn gửi, tiếp đến nhập đường
dẫn tới file bạn cần gửi, tổng dung lượng các file phải nhỏ
hơn hoặc bằng 3MB, nếu không bạn sẽ được thông báo và
phải nhập lại đường dẫn các file. Thông báo hiện lên báo
hiệu việc gửi email đã thành công.
b. Chức năng SEE LIST EMAIL
Sau khi chọn chức năng SEE LIST EMAIL, sẽ xuất hiện các
folder, người dùng nhập số tương ứng để xem email trong
folder cần xem, nhập “0” để thoát ra MENU. 7
Sau khi chọn folder, danh sách email sẽ xuất hiện, bấm số
tương ứng để lựa chọn email muốn bạn muốn xem. Sau khi
chọn, nội dung email sẽ xuất hiện kèm thông báo có file
đính kèm hay không kèm sanh sách các file nếu có. Bạn
nhập “1” nếu muốn lưu các file hoặc “2” nếu không.
Nếu bạn chọn có lưu file, hãy nhập đường dẫn mà bạn muốn
file được lưu về và các file đính kèm sẽ được lưu về. 8
Sau khi đọc, mail của bạn sẽ được đánh dấu là đã đọc. Bạn
vẫn có thể tiếp tục lưu file vào thư mục khác.
5. Kịch bản giao tiếp của chương trình
a. Gửi email đi dùng giao thức SMTP - B1: Kết nối.
Mail Client thiết lập kết nối với Mail Server bằng Socket
thông qua cổng 2225 (hoặc cổng khác, tùy vào cấu hình).
- B2: Gửi lệnh EHLO. 9
Mail Client gửi thông báo đến Mail Server về sự hiện diện
của nó thông qua lệnh EHLO [127.0.0.1] (hoặc địa chỉ IP khác, tùy vào cấu hình).
- B3: Chuyển thông điệp.
Sau khi thiết lập kết nối và xác nhận danh tính, Mail
Client gửi tới Mail Server địa chỉ email của người gửi thông qua
lệnh MAIL FROM RCPT TO.
- B4: Truyền nội dung.
Mail Client gửi tới Mail Server lệnh DATA để yêu cầu gửi
dữ liệu thư (văn bản, tệp đính kèm, vv.), sau khi nhận phản hồi
354 enter mail, end with line containing only “.”, Mail Client
bắt đầu gửi nội dung email từng dòng một, cấu trúc gồm 3
phần chính là phần đầu( chứa thông tin cơ bản của mail), phần
content( chứa nội dung của email), phần dữ liệu file( chứa nội
dung file đính kém đã được mã hóa). Phần dữ liệu này phải
được kết thúc bởi 1 dòng chỉ bào gồm “.” 10
Phần đầu gồm các dòng Message-ID( mã định danh duy
nhất của email), Date( giờ, ngày, tháng, năm gửi email), MIME-
Version
( phiên bản MIME sử dụng), User-Agent( ứng dụng gửi
thư đang sử dụng), Content-Language( ngôn ngữ), To( địa chỉ
email người nhận, nếu nhiều sẽ ngăn cách bằng dấu “,”),
From( địa chỉ email người gửi), Subject( tiêu đề của email).
Nếu email được gửi có đính kèm file, một chuỗi kí tự( tự
quy định) được sử dụng để đặt ranh giới giữa các phần khác
nhau giúp máy chủ thư và các chương trình đọc thư hiểu cách
các phần của thư được tách biệt. Lúc này dòng đầu tiên được
gửi cho Mail Server sẽ là Content-Type: multipart/mixed;
boundary= “//Tự quy định//”
, khi gửi dữ liệu, một dấu " --" 11
được thêm vào đầu mỗi boundary, và dấu "--" được thêm vào
cuối cùng để chỉ định sự kết thúc của email. Dòng This is a
multi-part message in MIME format
thông báo cho Mail Server
rằng email đó chứa nhiều phần khác nhau.
Đối với phần nội dung email, phần header bao gồm
Content-Type:… xác định kiểu của nội dung gửi là văn bản,
Content-Transfer-Encoding: … xác định cách biểu diễn và
truyền tải nội dung email. Cách một dòng so với phần header
là phần nội dung email mà bạn muốn gửi đi.
Đối với phần file đính kèm, phần header bao gồm
Content-Type:… xác định kiểu của tệp đính kèm; Content-
Disposition:…
xác định cách xử lý nội dung, bao gồm cả tên
tệp đính kèm; Content-Transfer-Encoding:… xác định phương
pháp mã hóa sử dụng để truyền tải dữ liệu của tệp đính kèm(ở
đây là base64). Cách một dòng sau đó là phần nội dung email
đã được mã hóa theo phương pháp base64. 12
-B5: Kết thúc phiên. 13
Khi quá trình truyền tải hoàn tất, kết nối giữa Mail Client
và Mail Server sẽ được đóng.
b. Tải một email về từ Mail server dùng giao thức POP3. - B1: Kết nối.
Mail Client thiết lập kết nối với Mail Server bằng Socket
thông qua cổng 3335 (hoặc cổng khác, tùy vào cấu hình). - B2: Chứng thực.
Người dùng cung cấp thông tin đăng nhập (tên người
dùng và mật khẩu) để xác thực thông qua lệnh USER PASS.
Mail Server trả về +OK nếu xác thực thành công.
- B3:Bắt đầu phiên và lấy thông tin về các email.
Mail Client lấy số lượng thư và tổng kích thước của chúng
bằng bệnh STAT. Mail Server trả về +OK kích thước>
Mail Client sử dụng lệnh LIST để lấy danh sách các thư
kèm dung lượng của từng thư lần lượt theo số thứ tự. Mail
Server sẽ trả về lần lượt .
Chương trình sẽ kiểm tra và thực hiện lấy nội dung của
thư mới vừa nhận bằng lệnh RETR . Mail
Server trả về thông tin, nội dung email. 14
- B4: Kết thúc phiên.
Mail client kết thúc phiên và đăng xuất bằng lệnh QUIT.
6. Môi trường lập trình và các framework hỗ trợ để thực thi ứng dụng
Chương trình được viết bằng ngôn ngữ C++ trên hệ điều hành Windows. 15 7. Tài liệu tham khảo
Chat Openai: https://chat.openai.com
SMTP command: https://mailtrap.io/blog/smtp-commands-and- responses/
POP3 command: https://electrictoolbox.com/pop3-commands/
How to send email with an attachment from C++ through SMTP?
Cùng tìm hiểu về Base64 encoding
Json là gì? Những điều lập trình viên nên biết về Json File
C++ Network Programming Part 1: Sockets
C++ Network Programming Part 2: TCP & UDP 16