Tìm hiểu giao thức và thiết kế ứng dụng gửi thư điện tử

17 11 0
Tìm hiểu giao thức  và thiết kế ứng dụng gửi thư điện tử

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Mục Lục Lời cảm ơn........................................................................................2 Chương I: Cơ Sở Lý Thuyết ..........................................................3 1.1 Lý do chọn đề tài ............................................................................................3 1.2 Cơ sở lập trình ................................................................................................3 1.3 Giới thiệu về Python .......................................................................................3 1.4 Giới thiệu về ClientServer..............................................................................4 1.5 Giới thiệu về TCPIP.......................................................................................5 1.6 Giới thiệu về HTML và BOOTSTRAP...........................................................6 Chương II: Quy trình và lưu đồ thuật toán .........................................6 2.1 Yêu cầu đề tài..................................................................................................6 2.2 Các thư viện và class được sử dụng trong chương trình ..................................7 2.3 Quy trình ........................................................................................................7 2.4 Lưu đồ thuật toán ............................................................................................8 Chương III: Viết chương trình....................................................................9 3.1 Phân tích chức năng ........................................................................................9 3.2 Thiết kế..........................................................................................................10 Chương IV: Kết quả ......................................................................................13 4.1 Kết quả...........................................................................................................13 4.2 Hướng dẫn sử dụng chương trình .................................................................14 Tài Liệu Tham Khảo ....................................................................16 LỜI CẢM ƠN Trong thời gian làm bài tập lớn “Tìm hiểu giao thức và thiết kế ứng dụng gửi thư điện tử”, chúng em đã nhận được nhiều sự giúp đỡ, đóng góp ý kiến và chỉ bảo nhiệt tình của thầy cô. Em xin gửi lời cảm ơn chân thành đến TS. Bồ Quốc Bảo, giảng viên bộ môn Lập Trình Mạng – Trường Đại học Công Nghiệp Hà Nội người đã tận tình hướng dẫn, chỉ bảo chúng em trong suốt quá trình làm bài tập lớn. Em cũng xin chân thành cảm ơn các thầy cô giáo trong Khoa Điện Tử đã dạy dỗ cho em kiến thức về các môn đại cương cũng như các môn chuyên ngành, giúp em có được cơ sở lý thuyết vững vàng và tạo điều kiện giúp đỡ em trong suốt quá trình học tập. Trong quá trình trình bày khó tránh khỏi sai sót, rất mong các thầy, cô bỏ qua. Đồng thời do trình độ lý luận cũng như kinh nghiệm 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, cô để em học thêm được nhiều kinh nghiệm và sẽ hoàn thành tốt hơn trong những bài báo cáo sau. Chúng em xin chân thành cảm ơn Chương I: Cơ Sở Lý Thuyết 1.1 Lý do chọn đề tài Hiện nay mạng Internet toàn cầu đã phát triển rất mạnh, đáp ứng rất tốt các nhu cầu về thông tin khoa học, giải trí, liên lạc, mua bán, quảng cáo v.v... của con người. Internet đã trở thành một thành phần không thể thiếu với cuộc sống hiện đại. Về bản chất, Internet là một hệ thống mạng, liên kết các máy tính trên toàn thế giới lại theo những chuẩn chung của nó. Với phạm vi nhỏ hơn nhưng cũng rất tương tự, có những mạng khác đó là WAN, LAN.., mỗi mô hình đó đều được ứng dụng rất nhiều tiện ích khác nhau. Với mục tiêu để cho các sinh viên ra trường với một kiến thức tốt về mạng, về lập trình ứng dụng trên mạng để có thể làm được nhiều việc khác nhau, bộ môn Lập Trình Mạng ra đời. Vì vậy, để áp dụng kiến thức đã học và muốn làm ra một ứng dụng có thể áp dụng trong thực tế chúng em đã tìm được đề tài với tên “Tìm hiểu giao thức và thiết kế ứng dụng gửi thư điện tử 1.2 Cơ sở lập trình Ứng dụng hoạt động dựa vào giao thức IPTCP để truyền dữ liệu giữa hai máy khác nhau, cụ thể ở đây là một máy server để cung cấp dịch vụ và nhiều máy client sử dụng dịch vụ do máy server cung cấp để cho người dùng sử dụng. Ngôn ngữ lập trình ở đây là ngôn ngữ Python (Phiên bản 3.7) vì Python là ngôn ngữ có thể được sử dụng để viết ứng dụng chạy trên hầu hết các thiết bị (ở đây ta quan tâm tới thiết bị có hỗ trợ mạng). Trọng điểm, có mấy khả năng nổi trội do Python cung cấp mà ta có thể sử dụng là : Lập trình đa tuyến trình (Cùng 1 ứng dụng nhưng có thể chạy nhiều tiến trình song song với nhau thay vì cứ phải tiến trình này đợi tiến trình kia kết thúc mới có thể thực hiện) Python là một nền tảng có thể chạy trên nhiều loại thiết bị với nhiều hệ điều hành khác nhau nên có phạm vi ứng dụng rất rộng rãi. Lập trình mạng. Lớp quan trọng nhất mà ta sử dụng là lớp Socket và ServerSocket. 1.3 Giới thiệu về Python Python là một ngôn ngữ lập trình bậc cao, thông dịch, hướng đối tượng, đa mục đích và cũng là một ngôn ngữ lập trình động. Cú pháp của Python là khá dễ dàng để học và ngôn ngữ này cũng mạnh mẽ và linh hoạt không kém các ngôn ngữ khác trong việc phát triển các ứng dụng. Python hỗ trợ mẫu đa lập trình, bao gồm lập trình hướng đối tượng, lập trình hàm và mệnh lệnh hoặc là các phong cách lập trình theo thủ tục. Python không chỉ làm việc trên lĩnh vực đặc biệt như lập trình web và đó là tại sao ngôn ngữ này là đa mục đích bởi vì nó có thể được sử dụng với web, enterprise, 3D CAD, … Bạn không cần sử dụng các kiểu dữ liệu để khai báo biến bởi vì kiểu của nó là động, vì thế bạn có thể viết a=15 để khai báo một giá trị nguyên trong một biến. Với Python, việc phát triển ứng dụng và debug trở nên nhanh hơn bởi vì không cần đến bước biên dịch và chu trình edittestdebug của Python là rất nhanh. Dưới đây là một số đặc điểm chính của Python: ⁺ Dễ dàng để sử dụng: Python là một ngôn ngữ bậc cao rất dễ dàng để sử dụng. Python có một số lượng từ khóa ít hơn, cấu trúc của Python đơn giản hơn và cú pháp của Python được định nghĩa khá rõ ràng, … Tất cả các điều này là Python thực sự trở thành một ngôn ngữ thân thiện với lập trình viên. ⁺ Bạn có thể đọc code của Python khá dễ dàng. Phần code của Python được định nghĩa khá rõ ràng và rành mạch. ⁺ Python có một thư viện chuẩn khá rộng lớn. Thư viện này dễ dàng tương thích và tích hợp với UNIX, Windows, và Macintosh. ⁺ Python là một ngôn ngữ thông dịch. Trình thông dịch thực thi code theo từng dòng (và bạn không cần phải biên dịch ra file chạy), điều này giúp cho quá trình debug trở nên dễ dàng hơn và đây cũng là yếu tố khá quan trọng giúp Python thu hút được nhiều người học và trở nên khá phổ biến. ⁺ Python cũng là một ngôn ngữ lập trình hướng đối tượng. Ngoài ra, Python còn hỗ trợ các phương thức lập trình theo hàm và theo cấu trúc. Ngoài các đặc điểm trên, Python còn khá nhiều đặc điểm khác như hỗ trợ lập trình GUI, mã nguồn mở, có thể tích hợp với các ngôn ngữ lập trình khác, … 1.3 Giới thiệu về ClientServer Server được hiểu là máy chủ, thường là một hệ thống máy lớn, có bộ xử lý mạnh, có khả năng hoạt động đáng tin cậy, có khả năng lưu trữ dữ liệu lớn, nó chuyên quản lý tài nguyên (chủ yếu là cơ sở dữ liệu), cung cấp các dịch vụ mạng cho các máy khách (client) sử dụng. Bình thường nó chạy suốt thời gian thực và sẵn sàng chấp nhận các yêu cầu kết nối và các yêu cầu dịch vụ khác từ máy khách. Client là máy khách, nó thường được sử dụng bởi người dùng cuối. Nó hoạt động dựa trên việc sử dụng dịch vụ mà máy server cung cấp để thực hiện các công việc mà người dùng cuối mong muốn. Quy trình hoạt động của mô hình này lặp lại 2 quá trình như sau : Client gửi yêu cầu lên server. Server nhận được yêu cầu thì sẻ xử lý thích hợp và trả lời lại client. Mô hình ClientServer 1.5 Giới thiệu về TCPIP +) Giới thiệu về TCP Giao thức TCP (Transmission Control Protocol) là giao thức hướng kết nối (connectionoriented), nó đòi hỏi thiết lập kết nối trước khi bắt đầu gửi dữ liệu và kết thúc kết nối khi việc gửi dữ liệu hoàn tất theo đúng thứ tự: thiết lập kết nối, truyền dữ liệu và kết thúc kết nối. +) Giới thiệu về IP. IP là địa chỉ của một máy tính trên mạng, dựa vào địa chỉ IP giao thức TCP có thể truyền dữ liệu chính xác từ một máy này qua máy kia thông qua hệ thống mạng. Ở trên mạng, một máy tính sẻ có một địa chỉ IP khác nhau, từ địa chỉ IP có thể biết được máy nào trên mạng và ngược lại. +) Giới thiệu về cổng Port. Với IP, giao thức TCP chỉ mới có thể truyền dữ liệu chính xác từ máy này qua máy kia mà chưa thể truyền chính xác đến từng ứng dụng trên máy được. Hiện nay, các hệ thống máy thông thường hoạt động theo chế độ đa nhiệm, nghĩa là có nhiều ứng dụng chạy cùng một lúc và trong đó có thể có nhiều ứng dụng sử dụng dịch vụ mạng. Yêu cầu, khi máy chủ A truyền dữ liệu cho một ứng dụng u trên máy B thì trên máy B phải đảm bảo dữ liệu đó phải đến được ứng dụng u, chứ không phải ứng dụng v. Để thực hiện điều đó thì máy chủ A khi truyền dữ liệu đi thì trên dữ liệu đó có một thành phần thông tin giúp máy B xác định được đúng ứng dụng u. Phần thông tin đó chính là địa chỉ port trên máy B, nó có thể hiểu là lỗ cắm ảo trên máy B mà ứng dụng u đã đăng ký để độc quyền sử dụng nhằn nhận dữ liệu từ máy chủ A. Trên thực tế, địa chỉ port là một số nguyên 2 byte có giá trị từ 0 đến 65535. Nó có đặc điểm : Giá trị từ 0 đến 1023 là các cổng phổ biến dành cho các ứng dụng thông dụng như http: 80, mail : 25, ftp : 21, Telnet 23.... Các giá trị còn lại có thể được sử dụng linh hoạt. Mỗi cổng trong mỗi thời điểm được sử dụng cho tối đa là 1 ứng dụng. Ví dụ như một ứng dụng nào đó đã sử dụng cổng 55 thì ứng dụng khác không thể sử dụng cổng 55 đó nữa chừng nào ứng dụng trước đó chưa có đóng cổng 55 lại. 1.6 Giới thiệu về HTML và BOOTSTRAP + HTML và BOOSTRAP HTML( Hyper Text Markup Language) ngôn ngữ lập trình siêu văn bản: là một trong những ngôn ngữ được sử dụng rộng rãi và phổ biến nhất với đa số những người muốn tạo lập trang web cá nhân hay tổ chức. Có thể nói HTML chính là xương sống của một trang web. BOOSTRAP: Bootstrap là một framework cho phép thiết kế website reponsive nhanh hơn và dễ dàng hơn + Bootstrap là bao gồm các HTML templates, CSS templates và Javascript tao ra những cái cơ bản có sẵn như: typography, forms, buttons, tables, navigation, modals, image carousels và nhiều thứ khác. Trong bootstrap có thêm các plugin Javascript trong nó. Giúp cho việc thiết kế reponsive của bạn dễ dàng hơn và nhanh chóng hơn. Lịch sử Bootstrap Bootstrap là dược phát triển bởi Mark Otto và Jacob Thornton tại Twitter. Nó được xuất bản như là một mã nguồn mở vào tháng 8 năm 2011 trên GitHub. Tính ra đến thời điểm mình viết bài viết này nó cũng đã phát triển được 3 năm rồi. Bản bootstrap mới nhất bây giờ là bootstrap 3. Chương II: Quy trình và lưu đồ thuật toán 2.1 Yêu cầu đề tài Thiết kế chương trình và giao điện để mọi người có thể gửi thư điện tử cho một hay nhiều người một cách dễ dàng cho nhau bao gồm gửi ảnh, file và các tệp . Các thư gửi được sẽ được thông báo là đã gửi thành công . 2.2 Các thư viện và class được sử dụng trong chương trình + Thư viện CGI • CGI (là viết tắt của Common Gateway Interface) là một tập hợp các chuẩn mà định nghĩa cách thông tin được trao đổi giữa Web Server và một Custom Script. • Trong ứng dụng của chúng em thì thư viện CGI dùng để lấy dữ liệu từ phía client về server để xử lí + Thư viện smtplib và email.mime 2 thư viện trên là những thư viện hỗ trợ cho việc gửi email. Email.mime dùng để tạo một đối tượng email Giao thức gửi thư đơn giản (SMTP) là một giao thức xử lý việ

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA ĐIỆN TỬ BÁO CÁO ĐỀ TÀI ĐỀ TÀI: Tìm hiểu giao thức thiết kế ứng dụng gửi thư điện tử Giảng viên hướng dẫn : TS Bồ Quốc Bảo LỚP: Truyền thơng mạng máy tính Sinh viên thực hiện: Nguyễn Thế Cường – 1141150052 Phùng Quang Huy – 1141150009 Nguyễn Khắc Mạnh – 1141150012 Vũ Anh Quyền – 1141150030 Mục Lục Lời cảm ơn Chương I: Cơ Sở Lý Thuyết 1.1 1.2 1.3 1.4 1.5 1.6 Lý chọn đề tài Cơ sở lập trình Giới thiệu Python .3 Giới thiệu Client/Server Giới thiệu TCP/IP .5 Giới thiệu HTML BOOTSTRAP Chương II: Quy trình lưu đồ thuật toán 2.1 Yêu cầu đề tài 2.2 Các thư viện class sử dụng chương trình 2.3 Quy trình 2.4 Lưu đồ thuật toán Chương III: Viết chương trình 3.1 Phân tích chức 3.2 Thiết kế 10 Chương IV: Kết 13 4.1 Kết 13 4.2 Hướng dẫn sử dụng chương trình 14 Tài Liệu Tham Khảo 16 LỜI CẢM ƠN Trong thời gian làm tập lớn “Tìm hiểu giao thức thiết kế ứng dụng gửi thư điện tử”, chúng em nhận nhiều giúp đỡ, đóng góp ý kiến bảo nhiệt tình thầy cô Em xin gửi lời cảm ơn chân thành đến TS Bồ Quốc Bảo, giảng viên mơn Lập Trình Mạng – Trường Đại học Công Nghiệp Hà Nội người tận tình hướng dẫn, bảo chúng em suốt trình làm tập lớn Em xin chân thành cảm ơn thầy cô giáo Khoa Điện Tử dạy dỗ cho em kiến thức môn đại cương môn chuyên ngành, giúp em có sở lý thuyết vững vàng tạo điều kiện giúp đỡ em suốt trình học tập Trong q trình trình bày khó tránh khỏi sai sót, mong thầy, bỏ qua Đồng thời trình độ lý luận kinh nghiệm cịn hạn chế nên báo cáo khơng thể tránh khỏi thiếu sót, chúng em mong nhận ý kiến đóng góp thầy, để em học thêm nhiều kinh nghiệm hoàn thành tốt báo cáo sau Chúng em xin chân thành cảm ơn! Chương I: Cơ Sở Lý Thuyết 1.1 Lý chọn đề tài Hiện mạng Internet toàn cầu phát triển mạnh, đáp ứng tốt nhu cầu thông tin khoa học, giải trí, liên lạc, mua bán, quảng cáo v.v người Internet trở thành thành phần thiếu với sống đại Về chất, Internet hệ thống mạng, liên kết máy tính tồn giới lại theo chuẩn chung Với phạm vi nhỏ tương tự, có mạng khác WAN, LAN , mơ hình ứng dụng nhiều tiện ích khác Với mục tiêu sinh viên trường với kiến thức tốt mạng, lập trình ứng dụng mạng để làm nhiều việc khác nhau, mơn Lập Trình Mạng đời Vì vậy, để áp dụng kiến thức học muốn làm ứng dụng áp dụng thực tế chúng em tìm đề tài với tên “Tìm hiểu giao thức thiết kế ứng dụng gửi thư điện tử 1.2 Cơ sở lập trình Ứng dụng hoạt động dựa vào giao thức IP/TCP để truyền liệu hai máy khác nhau, cụ thể máy server để cung cấp dịch vụ nhiều máy client sử dụng dịch vụ máy server cung cấp người dùng sử dụng Ngơn ngữ lập trình ngơn ngữ Python (Phiên 3.7) Python ngơn ngữ sử dụng để viết ứng dụng chạy hầu hết thiết bị (ở ta quan tâm tới thiết bị có hỗ trợ mạng) Trọng điểm, có khả trội Python cung cấp mà ta sử dụng : - Lập trình đa tuyến trình (Cùng ứng dụng chạy nhiều tiến trình song song với thay phải tiến trình đợi tiến trình kết thúc thực hiện) - Python tảng chạy nhiều loại thiết bị với nhiều hệ điều hành khác nên có phạm vi ứng dụng rộng rãi - Lập trình mạng Lớp quan trọng mà ta sử dụng lớp Socket ServerSocket 1.3 Giới thiệu Python Python ngôn ngữ lập trình bậc cao, thơng dịch, hướng đối tượng, đa mục đích ngơn ngữ lập trình động Cú pháp Python dễ dàng để học ngôn ngữ mạnh mẽ linh hoạt không ngôn ngữ khác việc phát triển ứng dụng Python hỗ trợ mẫu đa lập trình, bao gồm lập trình hướng đối tượng, lập trình hàm mệnh lệnh phong cách lập trình theo thủ tục Python không làm việc lĩnh vực đặc biệt lập trình web ngơn ngữ đa mục đích sử dụng với web, enterprise, 3D CAD, … Bạn không cần sử dụng kiểu liệu để khai báo biến kiểu động, bạn viết a=15 để khai báo giá trị nguyên biến Với Python, việc phát triển ứng dụng debug trở nên nhanh khơng cần đến bước biên dịch chu trình edit-test-debug Python nhanh Dưới số đặc điểm Python: ⁺ Dễ dàng để sử dụng: Python ngôn ngữ bậc cao dễ dàng để sử dụng Python có số lượng từ khóa hơn, cấu trúc Python đơn giản cú pháp Python định nghĩa rõ ràng, … Tất điều Python thực trở thành ngôn ngữ thân thiện với lập trình viên ⁺ Bạn đọc code Python dễ dàng Phần code Python định nghĩa rõ ràng rành mạch ⁺ Python có thư viện chuẩn rộng lớn Thư viện dễ dàng tương thích tích hợp với UNIX, Windows, Macintosh ⁺ Python ngơn ngữ thơng dịch Trình thơng dịch thực thi code theo dịng (và bạn khơng cần phải biên dịch file chạy), điều giúp cho trình debug trở nên dễ dàng yếu tố quan trọng giúp Python thu hút nhiều người học trở nên phổ biến ⁺ Python ngơn ngữ lập trình hướng đối tượng Ngồi ra, Python cịn hỗ trợ phương thức lập trình theo hàm theo cấu trúc Ngồi đặc điểm trên, Python nhiều đặc điểm khác hỗ trợ lập trình GUI, mã nguồn mở, tích hợp với ngơn ngữ lập trình khác, … 1.3 Giới thiệu Client/Server Server hiểu máy chủ, thường hệ thống máy lớn, có xử lý mạnh, có khả hoạt động đáng tin cậy, có khả lưu trữ liệu lớn, chuyên quản lý tài nguyên (chủ yếu sở liệu), cung cấp dịch vụ mạng cho máy khách (client) sử dụng Bình thường chạy suốt thời gian thực sẵn sàng chấp nhận yêu cầu kết nối yêu cầu dịch vụ khác từ máy khách Client máy khách, thường sử dụng người dùng cuối Nó hoạt động dựa việc sử dụng dịch vụ mà máy server cung cấp để thực công việc mà người dùng cuối mong muốn Quy trình hoạt động mơ hình lặp lại trình sau : - Client gửi yêu cầu lên server - Server nhận u cầu sẻ xử lý thích hợp trả lời lại client Mơ hình Client/Server 1.5 Giới thiệu TCP/IP +) Giới thiệu TCP Giao thức TCP (Transmission Control Protocol) giao thức hướng kết nối (connection-oriented), địi hỏi thiết lập kết nối trước bắt đầu gửi liệu kết thúc kết nối việc gửi liệu hoàn tất theo thứ tự: thiết lập kết nối, truyền liệu kết thúc kết nối +) Giới thiệu IP IP địa máy tính mạng, dựa vào địa IP giao thức TCP truyền liệu xác từ máy qua máy thơng qua hệ thống mạng Ở mạng, máy tính sẻ có địa IP khác nhau, từ địa IP biết máy mạng ngược lại +) Giới thiệu cổng Port Với IP, giao thức TCP truyền liệu xác từ máy qua máy mà chưa thể truyền xác đến ứng dụng máy Hiện nay, hệ thống máy thông thường hoạt động theo chế độ đa nhiệm, nghĩa có nhiều ứng dụng chạy lúc có nhiều ứng dụng sử dụng dịch vụ mạng Yêu cầu, máy chủ A truyền liệu cho ứng dụng u máy B máy B phải đảm bảo liệu phải đến ứng dụng u, ứng dụng v Để thực điều máy chủ A truyền liệu liệu có thành phần thông tin giúp máy B xác định ứng dụng u Phần thơng tin địa port máy B, hiểu lỗ cắm ảo máy B mà ứng dụng u đăng ký để độc quyền sử dụng nhằn nhận liệu từ máy chủ A Trên thực tế, địa port số nguyên byte có giá trị từ đến 65535 Nó có đặc điểm : - Giá trị từ đến 1023 cổng phổ biến dành cho ứng dụng thông dụng http: 80, mail : 25, ftp : 21, Telnet 23 Các giá trị cịn lại sử dụng linh hoạt - Mỗi cổng thời điểm sử dụng cho tối đa ứng dụng Ví dụ ứng dụng sử dụng cổng 55 ứng dụng khác khơng thể sử dụng cổng 55 chừng ứng dụng trước chưa có đóng cổng 55 lại 1.6 Giới thiệu HTML BOOTSTRAP + HTML BOOSTRAP HTML( Hyper Text Markup Language) ngơn ngữ lập trình siêu văn bản: ngôn ngữ sử dụng rộng rãi phổ biến với đa số người muốn tạo lập trang web cá nhân hay tổ chức Có thể nói HTML xương sống trang web BOOSTRAP: Bootstrap framework cho phép thiết kế website reponsive nhanh dễ dàng + Bootstrap bao gồm HTML templates, CSS templates Javascript tao có sẵn như: typography, forms, buttons, tables, navigation, modals, image carousels nhiều thứ khác Trong bootstrap có thêm plugin Javascript Giúp cho việc thiết kế reponsive bạn dễ dàng nhanh chóng Lịch sử Bootstrap Bootstrap dược phát triển Mark Otto Jacob Thornton Twitter Nó xuất mã nguồn mở vào tháng năm 2011 GitHub Tính đến thời điểm viết viết phát triển năm Bản bootstrap bootstrap Chương II: Quy trình lưu đồ thuật tốn 2.1 u cầu đề tài Thiết kế chương trình giao điện để người gửi thư điện tử cho hay nhiều người cách dễ dàng cho bao gồm gửi ảnh, file tệp Các thư gửi thông báo gửi thành công 2.2 Các thư viện class sử dụng chương trình + Thư viện CGI • CGI (là viết tắt Common Gateway Interface) tập hợp chuẩn mà định nghĩa cách thông tin trao đổi Web Server Custom Script • Trong ứng dụng chúng em thư viện CGI dùng để lấy liệu từ phía client server để xử lí + Thư viện smtplib email.mime thư viện thư viện hỗ trợ cho việc gửi email Email.mime dùng để tạo đối tượng email Giao thức gửi thư đơn giản (SMTP) giao thức xử lý việc gửi e-mail định tuyến e-mail máy chủ thư Python cung cấp mô-đun smtplib, định nghĩa đối tượng phiên máy khách SMTP sử dụng để gửi thư đến máy Internet có trình trình nghe SMTP ESMTP + Thư viện os Dùng để thao tác với file, thư mục + Thư viện http.server Để sử dụng do_GET do_PORT ta phải kế thừa từ class BaseHTTPRequestHandler HTTPServer ((host, port), phương thức kế thừa từ BaseHTTPRequestHandler) để chạy chương trình chạy địa với host port cho + class encoders (import từ thư viện email) Dùng để mã hóa tệp tin mà người dùng muốn gửi sang dạng base64 sau gửi tới người nhận 2.3 Quy trình Bước : Tìm hiểu send mail sử dụng ngôn ngữ python Bước : Kết hợp send mail với Web Server Bước : Tạo giao diện người dùng ( HTML + Bootrap) tích hợp vào bước 2.2 Lưu đồ thuật tốn LƯU ĐỒ THUẬT TỐN CỦA CHƯƠNG TRÌNH Begin Nhập liệu cho thẻ input Click SEND Đúng kiểu liệu input Gửi liệu server Gửi thành công Hiển thị trang sendfs.html Hiển thị trang sendss.html End Chương III: Viết chương trình 3.1 Phân tích chương trình B1 : Để gửi mail sử dụng python cần import thư viện hỗ trợ gửi mail (smtplib) class (MIMEText, MIMEMultipart, MIMEBase) Đầu tiên hàm create_email_message create_email_message(from_address, to_address, subject, msg_body, files=None) Các tham số truyền vào : - from_address : địa Email người gửi to_address : địa Email người nhận subject : tiêu đề thư msg_body : nội dung thư files : gửi file đính kèm (nếu có) 10 Đầu : đối tượng MIMEMultipart chứa thông tin cần thiết để gửi mail B2 : Kết hợp send mail với Web Server class Serv(BaseHTTPRequestHandler): def do_GET(self): # code def do_POST(self): # code Import class hỗ trợ cho Web Server (HTTPServer, BaseHTTPRequestHandler) từ thư viện http.server , Import cgi (hỗ trợ lấy data từ input bên phía Client trả về) - Tạo class có tên Serv dùng để kế thừa phương thức do_GET, - do_POST từ class BaseHTTPRequestHandler do_GET có nhiệm vụ trả view phía client để người dùng nhập - liệu gửi cho server do_POST nhận liệu từ client để xử lý thông qua phương thức FieldStorage thư viện cgi B3 : Tạo giao diện người dùng sử dụng HTML + Bootstrap 3.2 Thiết kế from http.server import HTTPServer, BaseHTTPRequestHandler import cgi import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders import os file_dir = "D:\\local" host = 'localhost' port = 8080 def create_email_message(from_address, to_address, subject, msg_body, files=None, html=None): msg = MIMEMultipart() msg['From'] = from_address 11 msg['To'] = ",".join(to_address) msg['Subject'] = subject msg.attach(MIMEText(msg_body, 'plain')) if html is not None: msg.attach(MIMEText(html, 'html')) if files is not None: for file in files: try: attachment = open(file, 'rb') part = MIMEBase('application', 'octet-stream') part.set_payload((attachment).read()) encoders.encode_base64(part) file_name_sended = file.split("\\")[-1] part.add_header('Content-Disposition', "attachment; filename= " + file_name_sended) msg.attach(part) except Exception as ex: print("could not attache file") print(ex) return msg def handler_send_mail(self, form, lst_email, msg): try: with smtplib.SMTP('smtp.gmail.com', port=587) as smtp_server: smtp_server.ehlo() smtp_server.starttls() smtp_server.login(str(form['Email'].value), str(form['Password'].value)) smtp_server.sendmail(str(form['Email'].value), lst_email, msg.as_string()) print('send mail Success !!') self.path = '/sendss.html' file_to_open = open(self.path[1:]).read() self.send_response(200) self.wfile.write(bytes(file_to_open, 'utf-8')) except Exception as e: print(e) self.path = '/sendfs.html' file_to_open = open(self.path[1:]).read() self.send_response(200) self.wfile.write(bytes(file_to_open, 'utf-8')) er = "Error : %s" % str(e) self.wfile.write(bytes(er, "UTF-8")) print('send mail Fail !') def send_multiple_files(fileitem, lst_file_name): fn = os.path.basename(fileitem.filename) if fileitem.filename: 12 open(file_dir + fn, 'wb').write(fileitem.file.read()) lst_file_name.append(file_dir + fn) print(" ONE - FILE " + fn + " upload success !\n") else: print("upload fail file "+fn+" !\n") class Serv(BaseHTTPRequestHandler): def do_GET(self): if self.path == '/': self.path = '/index.html' try: file_to_open = open(self.path[1:]).read() self.send_response(200) except: print("exception !!") file_to_open = "File not found" self.send_response(404) self.end_headers() self.wfile.write(bytes(file_to_open, 'utf-8')) def do_POST(self): if self.path == '/index.html': form = cgi.FieldStorage( fp=self.rfile, headers=self.headers, environ={'REQUEST_METHOD': 'POST', 'CONTENT_TYPE': self.headers['Content-Type']} ) self.send_response(200) self.end_headers() lst_email = str(form['sendto'].value).split(",") fileitem = form['filename'] lst_file_name = [] if str(fileitem) != "FieldStorage('filename', '', b'')": print("khac rong") if str(type(fileitem)) == "": print("1 value !") send_multiple_files(fileitem, lst_file_name) else: print("nhieu gia tri") for file in fileitem: send_multiple_files(file, lst_file_name) for s in lst_file_name: 13 print("url : " + s) else: print("rong") msg = create_email_message( from_address=str(form['Email'].value), to_address=lst_email, subject=str(form['Subject'].value), msg_body=str(form['message'].value), files=lst_file_name ) print(lst_email) handler_send_mail(self, form, lst_email, msg) return httpd = HTTPServer((host, port), Serv) httpd.serve_forever() Chương IV: Kết 4.1 Kết 14 4.2 Hướng dẫn sử dụng chương trình Run chương trình 15 Truy cập địa localhost:8080 16 Tài khoản mật email gửi thư List email nhận thư Nội dung chủ đề file cần gửi Reset : để chọn lại mục trắng Send : bắt đầu gửi thư Thư gửi thành công 17 Thư gửi bị lỗi Trong trường hợp thư gửi bị lỗi cần kiểm tra email người gửi hay sai Tài Liệu Tham Khảo [1] B Q Bảo, Python đơn giản, 2019 [2] "https://www.w3schools.com/," [Online] [3] "www.toidicode.com," [Online] [4] "https://realpython.com/," [Online] [5] "https://www.python.org/," [Online] 18 ... thức học muốn làm ứng dụng áp dụng thực tế chúng em tìm đề tài với tên ? ?Tìm hiểu giao thức thiết kế ứng dụng gửi thư điện tử 1.2 Cơ sở lập trình Ứng dụng hoạt động dựa vào giao thức IP/TCP để truyền... tài Thiết kế chương trình giao điện để người gửi thư điện tử cho hay nhiều người cách dễ dàng cho bao gồm gửi ảnh, file tệp Các thư gửi thông báo gửi thành công 2.2 Các thư viện class sử dụng. .. Protocol) giao thức hướng kết nối (connection-oriented), địi hỏi thiết lập kết nối trước bắt đầu gửi liệu kết thúc kết nối việc gửi liệu hoàn tất theo thứ tự: thiết lập kết nối, truyền liệu kết thúc kết

Ngày đăng: 08/04/2021, 20:19

Từ khóa liên quan

Mục lục

  • LỚP: Truyền thông mạng máy tính 1

  • LỜI CẢM ƠN

    • +) Giới thiệu về TCP

    • +) Giới thiệu về IP.

    • +) Giới thiệu về cổng Port.

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan