Đối với các doanh nghiệp, email lại càng trở nên quan trọng hơn trong những mẫu tin quảng cáo gửi tới nhiều khách hàng, các bản hợp đồng gửi tới những đối tác trong nước hay nước ngoài, hay các thông báo cho các nhân viên trong công ty…, với khả năng chuyển giao nhanh chóng gần như ngay lập tức, không khoảng cách, và chi phí rẻ thì email là một sự lựa chọn không thể thiếu cho các doanh nghiệp.Do đó, trong báo cáo bài tập lớn môn lập trình mạng, chúng em viết về một ứng dụng mạng “IMAP EMAIL CLIENT” đơn giản với các chức năng soạn mail mới và gửi đi (có đính kèm), hiển thị mail đến, đọc nội dung mail đến
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
❖
BÁO CÁO MÔN HỌC
LẬP TRÌNH MẠNG
IMAP EMAIL CLIENT
Giáo viên hướng dẫn : ThS Đặng Thanh Bình
Sinh viên thực hiện : 14110054 Nguyễn Trường Hận
14110001 Nguyễn Tuấn Anh
14110073 Trần Phan Khánh Huân
TP HỒ CHÍ MINH, THÁNG 12 NĂM 2017
Trang 2i
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Tp Hồ Chí Minh, ngày… tháng … năm ……
Giáo viên hướng dẫn
Trang 3ii
LỜI CẢM ƠN
Trên thực tế không có sự thành công nào mà không gắn liền với những sự hỗ trợ, giúp đỡ dù ít hay nhiều, dù trực tiếp hay gián tiếp của người khác Trong suốt thời gian
từ khi bắt đầu học và làm báo cáo môn học đến nay, chúng em đã nhận được rất nhiều
sự quan tâm, giúp đỡ và hướng dẫn của thầy Chúng em xin chân thành cảm ơn thầy Đặng Thanh Bình giàng viên môn “Lập trình mạng” khoa Công nghệ thông tin đã tận tâm hướng dẫn chúng em qua từng buổi học trên lớp cũng như những buổi nói chuyện, thảo luận về lĩnh vực sáng tạo trong báo cáo môn học Nếu không có những lời hướng dẫn, dạy bảo của thầy thì chúng em nghĩ bài báo cáo này của chúng em rất khó có thể hoàn thiện được Một lần nữa, em xin chân thành cảm ơn thầy Bài báo cáo được thực hiện trong khoảng thời gian gần 4 tuần Bước đầu đi vào thực tế, tìm hiểu về lĩnh vực sáng tạo trong nghiên cứu khoa học, kiến thức của chúng em còn hạn chế và còn nhiều
bỡ ngỡ
Trong quá trình làm bài báo cáo cuối kì , khó tránh khỏi sai sót, rất mong thầy bỏ qua Đồng thời do trình độ cũng như kinh nghiệm thực tiễn còn hạn chế nên bài báo cáo không thể tránh khỏi những thiếu sót, chúng em rất mong nhận được ý kiến đóng góp thầy để em học thêm được nhiều kinh nghiệm và sẽ hoàn thành tốt hơn bài báo cáo tốt nghiệp sắp tới
Sau cùng, em xin kính chúc quý thầy có thật dồi dào sức khỏe, niềm tin để tiếp tục thực hiện sứ mệnh cao đẹp của mình là truyền đạt kiến thức cho thế hệ mai sau
TP Hồ Chí Minh, ngày 20 tháng 12 năm 2017
Sinh viên thực hiện
Nguyễn Tuấn Anh Trần Phan Khánh Huân Nguyễn Trường Hận
Trang 4iii
LỜI NÓI ĐẦU
Ngày nay, sự bùng nổ và phát triển của công nghệ thông tin và mạng internet trên toàn thế giới, việc trao đổi thông tin đã trở nên dễ dàng hơn Một trong những cách để trao đổi thông tin trên internet không thể không nhắc tới vì những tiện ích và lợi ích mà
nó mang lại đó là thư điện tử hay còn gọi là e-mail (electronic mail) Thư điện tử (e-mail) là một hệ thống truyền nhận thư từ qua internet hay các mạng máy tính (computer network) E-mail có những lợi ích đáng kể so với cách viết thư truyền thống bằng giấy và mực Một thông điệp, một tin nhắn, lời chúc mừng hay văn bản,… có thể được gửi tại bất kỳ nơi nào trên toàn thế giới một cách dễ dàng và nhanh chóng gần như ngay lập tức E-mail chẳng những có thể truyền được chữ, nó còn có thể truyền được các dạng thông tin khác như hình ảnh, âm thanh, phim, và đặc biệt các phần mềm thư điện tử kiểu mới còn có thể hiện thị các e-mail dạng sống động tương thích với kiểu tệp html
Đối với các doanh nghiệp, e-mail lại càng trở nên quan trọng hơn trong những mẫu tin quảng cáo gửi tới nhiều khách hàng, các bản hợp đồng gửi tới những đối tác trong nước hay nước ngoài, hay các thông báo cho các nhân viên trong công ty…, với khả năng chuyển giao nhanh chóng gần như ngay lập tức, không khoảng cách, và chi phí rẻ thì e-mail là một sự lựa chọn không thể thiếu cho các doanh nghiệp
Do đó, trong báo cáo bài tập lớn môn lập trình mạng, chúng em viết về một ứng dụng mạng “IMAP EMAIL CLIENT” đơn giản với các chức năng soạn mail mới và gửi
đi (có đính kèm), hiển thị mail đến, đọc nội dung mail đến
Trang 5
iv
DANH MỤC TỪ VIẾT TẮT
IMAP: Internet Message Access Protocol
SMTP: Simple Mail Transfer Protocol
MUA: Mail User Agent
POP: Post Office Protocol
Trang 6v
DANH MỤC HÌNH ẢNH
Hình 1: Cơ chế hoạt động của thư điện tử (E-mail) 2
Hình 2: Các trường của email 4
Hình 3: Giao diện đăng nhập 19
Hình 4: Giao diện viết email mới 19
Hình 5: Giao diện hộp thư đến 20
Hình 6: Giao diện xem thư 20
Hình 7: Giao diện đính kém file vào mail 21
Trang 7vi
DANH MỤC BẢNG BIỂU
Bảng 1: Quy ước sử dụng các số cổng TCP 7
Trang 8vii
MỤC LỤC
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN i
LỜI CẢM ƠN ii
LỜI NÓI ĐẦU iii
DANH MỤC TỪ VIẾT TẮT iv
DANH MỤC HÌNH ẢNH v
DANH MỤC BẢNG BIỂU vi
MỤC LỤC vii
Chương 1: TỔNG QUAN VỀ EMAIL 1
1.1 Khái niệm về thư điện tử (Email) 1
1.2 Lợi ích của thư điện tử (e-mail) so với thư truyền thống 1
1.3 Cơ chế hoạt động của thư điện tử 2
1.4 Kiến trúc của thư điện tử 4
Chương 2: TÌM HIỂU VỀ IMAP EMAIl CLIENT 6
2.1 Giới thiệu về giao thức IMAP 6
2.2 Giới thiệu về Email client 6
2.3 Ưu điểm và khuyết điểm của IMAP EMAIL CLIENT 7
Ưu điểm 7
Khuyết điểm 7
Chương 3: XÂY DỰNG CHƯƠNG TRÌNH IMAP EMAIL CLIENT 9
3.1 Code 9
Khai báo các thư viện cần thiết 9
Khai báo class Gmail 9
Hàm send_message trong class Gmail 9
Hàm get_inbox trong class Gmail 10
Hàm decode_base64 trong class Gmail 11
Hàm Show_Sign_In_Window trong class Gmail 11
Hàm Show_List_Form trong class Gmail 12
Hàm Show_Send_Email_Form trong class Gmail 12
Trang 9viii
Hàm Show_Get_Inbox_Form trong class Gmail 13
Hàm TaoDoiTuong_Inbox trong class Gmail 15
Hàm TaoDoiTuong_Send trong class Gmail 15
Hàm TaoDoiTuong_Sign_In trong class Gmail 15
Các hàm thông báo trong class Gmail 16
Hàm click_attach_file_button trong class Gmail 16
Các Hàm xử lý button event 16
Hàm Subject_click trong class Gmail 17
Hàm close_windows trong class Gmail 17
Class inbox_info 17
Class Inbox_Info 17
Class Send_Email_Info 18
Gọi hàm 18
3.2 Giao diện 19
Đăng nhập 19
Giao diện viết mail mới 19
Xem hộp thư đến 20
Xem thư 20
Đính kèm file vào mail 21
Chương 4: KẾT LUẬN 22
TÀI LIỆU THAM KHẢO viii
Trang 101
Chương 1: TỔNG QUAN VỀ EMAIL
1.1 Khái niệm về thư điện tử (Email)
E-mail hay thư điện tử là một phương tiện truyền đạt thông tin rất nhanh Một mẫu thông tin (thư từ) có thể được gửi đi ở dạng mã hóa hay dạng thông thường và được chuyển qua các mạng máy tính đặc biệt là mạng internet Nó có thể chuyển mẫu thông tin từ một máy nguồn tới một hay rất nhiều máy nhận trong cùng một lúc
Ngày nay, e-mail không những có thể truyền được các ký tự, mà còn có thể truyền được các dạng thông tin khác như hình ảnh, âm thanh, phim và đặc biệt các phần mềm thư điện tử kiểu mới còn có thể hiện thị các e-mail dạng sống động tương thích với kiểu tệp html
1.2 Lợi ích của thư điện tử (e-mail) so với thư truyền thống
Thay vì viết thư bằng giấy mực và bút thì người gửi chỉ cần gõ chữ từ bàn phím của máy tính và biết dùng một phần mềm thư điện tử
Lá thư được gửi trên hệ thống bưu chính là vật liệu không cần máy nhận hay máy gửi Trong đó, nếu gửi thư điện tử, chỉ có các tín hiệu điện mã hóa nội dung bức thư điện tử được truyền đi đến máy nhận Do đó, chỉ nội dung hay cách trình bày lá thư điện
tử là được bảo toàn Trong khi đó, dùng đường bưu điện người ta có thể gửi đi các vật liều hàm chứa thêm nội dung hay ý nghĩa khác Điều này có thể rất quan trọng đối với nhiều người
Vận tốc truyền thư điện tử bất kỳ lúc nào cũng có thể mở phần mềm thư điện tử ra đọc nên tiện lợi hơn là việc phải bỏ thư ở các thùng thư Đồng thời, vì mỗi người dùng thư đều phải nhập mật khẩu vào máy nên thư điện tử sẽ khó bị người ở chung đọc lén
so với thư gửi bưu điện Nhưng ngược lại, các tay tin tặc xa lạ có thể xâm nhập vào hệ thống thư điện tử các nhân nếu như các mật mã hay các hệ thống an toàn phần mềm bị
bẻ gãy
Khối lượng gửi và nhận thư điện tử có thể nhiều hơn thư bưu điện rất nhiều lần Thư điện tử không thể bị hư hại vật lý Thư điện tử có thể bị nhiễm virus, các mã độc hại
Khả năng chuyển tiếp thư nhanh chóng
Trang 112
Hộp thư là nơi cất giữ các thư từ với địa chỉ xác định Tương tự, trong hệ thống thư điện tử, thì hộp thư này tương đương với phần dữ liệu chứa nội dung các e-mail cộng với địa chỉ của người chủ thư điện tử Điểm khác biệt ở đây là hộp thư điện tử sẽ
có nhiều chức năng hơn là việc xóa bỏ các thư cũ
Mỗi người có thế có một hay nhiều địa chỉ E-mail (và phải được đăng ký qua một
hệ thống nào đó) Mỗi hộp thư sẽ có một địa chỉ phân biệt không bao giờ trùng với địa chỉ E-mail khác
1.3 Cơ chế hoạt động của thư điện tử
E-mail là dịch vụ rất phổ biến và thông dụng trong mạng Internet và hầu như không thể thiếu được trong Internet hiện nay Tuy nhiên không phải hầu nhưn là dịch vụ “từ đầu- đến cuối ”(end to end) Nghĩa là dịch vụ này không đòi hỏi hai máy tính gửi và nhận thư phải nối trực tiếp với nhau để thực hiện việc chuyển thư Nó là dịch vụ kiểu lưu và chuyển tiếp (store-and-forward) thư được chuyển từ máy này sang máy khác cho tới khi máy đích nhận được Người nhận cũng chỉ thực hiện một số thao tác đơn giản để lấy thư, đọc thư và nếu cần thì cho in ra Cách liên lạc này thuận tiện hơn nhiều so với gửi thư thông thường qua bức điện hay Fax, lại rẻ và nhanh hơn Cách thực hiện việc chuyển thư không cần thiết phải kết nối trực tiếp với nhau để chuyển thư, thư có thể được chuyển từ máy này đến máy khác cho tới máy đích… Giao thức truyền thống sử dụng cho hệ thống thư điện tử của Internet là SMTP (Simple Mail Transfer Protocol)
Hình 1: Cơ chế hoạt động của thư điện tử (E-mail)
Giao thức liên lạc: mặc dù gửi thử trên Internet sử dụng nhiều giao thức khác nhau, nhưng giao thức SMTP được dùng trong việc vận chuyển mail giữa các trạm Giao thức này đặc tả trong 2 chuẩn là trong RFC 822(định nghĩa cấu trúc của thư) và RFC 821(đặc
Trang 123
tả giao thức trao đổi giữa hai mạng) ngoài ra trong RFC 821 sẽ nói rõ các qui luật và cách thức hoạt động của giao thức Là một giao thức cơ bản để chuyển thư giữa các máy Client, SMTP có bộ gửi thư, một bộ nhận thư, và một tập hợp lệnh dùng để gửi thư từ người gửi đến người nhận Giao thức SMTP hoạt động theo mô hình khách/chủ (Client/Server) với một tập lệnh đơn giản, trình khách (SMTP mail Client) sẽ bắt tay với máy chủ (SMTP mail Server ) gửi các yêu cầu tiếp nhận mail Trình đọc nội dung mail
do trình khác gửi đến và lưu vào một thư mục nhất định tương ứng với từng user trên máy chủ
Cứ mỗi trạm E-mail thường bao gồm ít nhất hai dịch vụ : POP3 có nhiệm vụ nhận/trả thư từ/tới E-mail client và dịch vụ SMTP có nhiệm vụ nhận/phân phối thư từ/đến POP3 đồng thời trao đổi thư với các trạm E-mail trung gian Ngoài ra trạm E-mail này có thể bổ sung thêm một số dịch vụ khác như ESMTP, IMAP, dịch vụ MX Record của dịch vụ DNS hay dịch vụ chuyển tiếp mail IMAP (INTERNET MESSAGE ACCESS PROTOCOL – VERSION 4revl) thực chất là giao thức mới bổ sung và mở rộng hơn của giao thức POP3 còn thiếu IMAP cho phép đọc, xóa, gửi, di chuyển mail ngay trên máy chủ Điều này rất thuận tiện cho người nhận mail phải thường xuyên di chuyển mail từ máy này sang máy khác trong quá trình làm việc Tuy nhiên chi phí để cài đặt một trạm E-mail có giao thức IMAP là cao hơn so với giao thức POP3
Mỗi người dùng (client) đều phải kết nối với một E-mail Server gần nhất (đóng vai trò bưu cục địa phương) phải có một tên (E-mail account) trên một trạm E-mail và
sử dụng chương trình E-mail client (ví dụ: hongnhung, macdinh123,…) Sau khi soạn thảo xong thư và đề rõ địa chỉ đích (người nhận) rồi gửi thư tới E-mail Server của mình E-mail Server này có nhiệm vụ sẽ tự động kiểm tra và định hướng chuyển thư tới đích hoặc chuyển thư tới một E-mail Server trung gian khác Thư chuyển tới E-mail Server của người nhận và được lưu trữ ở đó Đến khi người nhận thiết lập tới một cuốc kết nối tới E-mail Server đó thì thư sẽ chuyển về máy người nhận, nếu không thì thư vẫn tiếp tục giữ lại ở server đảm bảo không bị mất
Phần khác của thư điện tử là cho phép người sử dụng đính kèm (attachments) theo thư một tập tin bất kỳ (có thể dạng nhị phân chẳng hạn )
Như vậy để gửi/nhận thư người sử dụng chỉ cần quan tầm tới cách sử dụng chương trình E-mail Client Hiện nay có nhiều chương trình E-mail Client như Microsoft
Trang 134
Outlook Express, Eudora Pro, Peagasus mail, … và một dịch vụ E-mail Client rất phổ biến bây giờ là Webmail
1.4 Kiến trúc của thư điện tử
Về cơ bản, một bức thư Mail gồm 3 phần chính:
- Phần phong bì (Envelope): Mô tả thông tin về người gửi và người nhận
Phần này do các MTA tạo ra và sử dụng , nó chứa các thông tin để chuyển nhận email như địa chỉ người nhận, địa chỉ nơi gửi Hay nói cách khác, giao thức SMTP sẽ quy định thông tin của phong bì, các hệ thống E-mail cần những thông tin này để chuyền dữ liệu từ một máy tính này sang một
máy tính khác
- Phần tiều đề (header): chứa đựng các thông tin về người gửi, người nhận,
chủ đề bức Mail, địa chỉ hồi âm,v.v… Các thông tin này, một số được người sử dụng cung cấp khi gửi mail, một số khác được chương trình Mail
thêm vào, và số còn lại do Hệ thống điền thêm
+ Phần này cung cấp những thông tin tổng quát về Email như người
nhận, người gửi, ngày giờ nhận,…
+ Cấu tạo gồm nhiều trường (field) cấu trúc mỗi trường là một dòng văn
bản ASCII chuẩn 7 bit như sau:
<tên trường>:<nội dung của trường>
+ Sau đây là một số trường thông dụng và ý nghĩa của nó:
Hình 2: Các trường của email
Các trường trên là các trường chuẩn do giao thức SMTP quy định, ngoài ra trong phần header cũng có thể thêm một số trường khác do chương trình Email tạo ra nhằm quản lý các email mà chúng tạo ra
Trang 145
Các trường này được bắt đầu bằng ký tự X- và thông tin theo sau là cũng giống như ta thấy trên một trường chuẩn
+ Phần nội dung (body): chứa đựng nội dung của bức Mail, là nội dung
được tạo ra bởi trình soạn thảo Editor của chương trình Email Để phân biệt phần tiêu đề với phần nội dung của bức Mail, người ta quy ước đặt ranh giới là một dòng trắng (chuỗi ký tự ``\r\n``) Kết thúc của phần nội dung là chuỗi ký tự kết thúc Mail: ``\r\n.\r\n`` Như vậy nội dung bức Mail nằm trong khoảng giữa dòng trắng đầu tiên và ký tự kết thúc Mail Mặt khác do môi trường truyền thông là mạng Internet nên các ký tự cấu thành phần body của bức Mail cũng phải là các ký tự
ASCII chuẩn
Trang 156
Chương 2: TÌM HIỂU VỀ IMAP EMAIl CLIENT
2.1 Giới thiệu về giao thức IMAP
IMAP (tiếng Anh: Internet Message Access Protocol) là thế hệ mới của giao thức POP (Post Office Protocol) Nói một cách đơn giản, IMAP đặt sự kiểm soát email trên mail server trong khi nhiệm vụ của POP là tải toàn bộ thông điệp email về client server yêu cầu Cụ thể, IMAP cung cấp truy cập email theo ba chế độ khác nhau: offline (ngoại tuyến), online (trực tuyến) và disconnected (ngắt kết nối)
Truy cập chế độ offline IMAP giống như POP, các thông điệp email được truyền đến máy client server, xóa khỏi mail server và mối liên kết bị ngắt Sau đó người dùng đọc, trả lời, làm các việc khác ở chế độ ngoại tuyến, và nếu muốn gửi thư mới đi họ phải kết nối lại
Truy cập chế độ online là chế độ IMAP truy cập mà người dùng đọc và làm việc với thông điệp email trong khi vẫn giữ đang kết nối với mail server (kết nối mở) Các thông điệp này vẫn nằm ở mail server cho đến khi nào người dùng quyết định xóa nó đi Chúng đều được gắn nhãn hiệu cho biết loại để "đọc" hay "trả lời"
Trong chế độ disconnected, IMAP cho phép người dùng lưu tạm thông điệp ở client server và làm việc với chúng, sau đó cập nhật trở lại vào mail server ở lần kết nối
kế tiếp Chế độ này hữu ích cho những ai dùng laptop hay truy cập mạng bằng liên kết quay số điện thoại, đồng thời không muốn bỏ phí những lợi điểm của kho chứa thư ở mail server [3]
2.2 Giới thiệu về Email client
Email client (từ kỹ thuật là Mail User Agent (MUA), trong tiếng Việt là trình duyệt mail) là một phần mềm máy tính được dùng để truy cập và quản lý email của người dùng
Các mail client phổ biến bao gồm Microsoft Outlook, IBM Lotus Notes, Mozilla Thunderbird,, Evolution và Apple Inc.'s Mail.[4]
Một ứng dụng web cung cấp các dịch vụ quản lý tin nhắn, các thành phần, và các tính năng nhận mail đôi khi cũng được em là một trình duyệt mail, nhưng thường được gọi là webmail Các webmail phổ biến gồm Gmail, Lycos Mail, Mail.com, Outlook.com
và Yahoo! Mail
Trang 16Chỉ dùng các phiên mã hóa
_pop3._tcp
995 _pop3s._tcp
_imap._tcp
993 _imaps._tcp
• Cấu hình giao thức đơn giản, nhiều mail client hỗ trợ giao thức imap
• Truy cập được từ nhiều địa điểm khác nhau
• Cần kết nối internet để truy cập mail
• Xem nhanh hơn khi chỉ có các tiêu đề mail được tải về đến khi nội dung được yêu cầu rõ ràng [2]
• Mail được dự phòng tự động trên server
• Tiết kiệm không gian lưu trữ cục bộ
• Cho phép lưu hành mail cục bộ [2]
Khuyết điểm