2011-04-13 25 views
13

Tôi đang mạo hiểm trong chưa biết lãnh thổ ở đây ...Làm cách nào để xây dựng ứng dụng Email khách? - Python

Tôi cố gắng để làm việc ra làm thế nào cứng nó có thể được thực hiện một ứng dụng Email bằng Python:

  • Email hồi
  • Email gửi
  • định dạng Email
  • Email render

Ngoài ra tôi tự hỏi liệu tất cả các giao thức có dễ dàng/khó hỗ trợ hay không, ví dụ: SMTP, IMAP, POP3, ...


Hy vọng rằng ai đó có thể chỉ cho tôi đi đúng hướng :)

+2

Tôi đã xóa thẻ C++, dường như không liên quan đến C++ ở tất cả –

+1

Python: Pin bao gồm: smtp, imap, pop3 - [Giao thức Internet] (http: // docs. python.org/library/internet.html), [Xử lý Dữ liệu Internet] (http://docs.python.org/library/netdata.html) –

+1

Bạn có muốn xây dựng một cái gì đó với giao diện người dùng hay không? Nếu vậy, và đó là giao diện người dùng đó là thứ bạn muốn chơi, chỉ cần tạo giao diện người dùng cho ứng dụng email hiện tại. Quyết định những gì bạn muốn tìm hiểu chi tiết: tiêu đề, giao thức và byte hoặc các nút và thông báo? –

Trả lời

23

Ngôn ngữ Python cung cấp hỗ trợ thô cho các giao thức cần thiết trong thư viện chuẩn của nó. Sử dụng đúng cách sau đó, và phân tích cú pháp đúng cách và lắp ráp một thông điệp email "ngày hiện đại", tuy nhiên có thể khó thực hiện.

Ngoài ra, bạn không nói nếu bạn muốn tạo giao diện đồ họa cho ứng dụng e-mail của mình - nếu bạn muốn có giao diện đồ họa phù hợp - đến mức có thể sử dụng được, nó hoàn toàn là rất nhiều công việc.

Lưu trữ email cục bộ sẽ dễ dàng hơn - trừ khi bạn muốn triển khai đúng định dạng tệp mbox RFC-4155 để phần mềm khác có thể dễ dàng đọc/ghi các messga bạn đã tìm nạp, bạn có thể lưu trữ chúng dưới dạng đối tượng Python bằng cách sử dụng một ORM hoặc một cơ sở dữ liệu hướng đối tượng, chẳng hạn như ZODB hoặc MongoDB.

Nếu bạn muốn nhiều hơn một ứng dụng e-mail đồ chơi, bạn sẽ có rất nhiều công việc - mã hóa đúng tiêu đề e-mail, ví dụ, xác thực máy chủ và xác thực bảo mật và vận chuyển lớp, giải mã văn bản e-mail thân chính nó cho các thông điệp không phải ASCII. Mặc dù các mô-đun trên thư viện chuẩn của Python thực hiện rất nhiều điều đó, tài liệu của chúng thiếu ngắn về các ví dụ - và một ứng dụng email hoàn chỉnh sẽ phải sử dụng tất cả các phần sau đó.Chắc chắn là nơi để bắt đầu một ứng dụng thư điện tử, thậm chí là đồ chơi, sẽ xem qua RFC mới nhất cho e-mail (và bạn sẽ phải chọn từ đây http://www.ietf.org/rfc/rfc-index vì chỉ tìm kiếm " email rfc "trên google cho kết quả kém).

+0

nhờ trả lời tuyệt vời! :) – RadiantHex

1

Nếu tôi là bạn, tôi muốn kiểm tra mã nguồn của hiện email khách hàng có ý tưởng: thunderbird, sylpheed-claws, mutt ...

Tùy thuộc vào tập hợp các tính năng bạn muốn hỗ trợ, đó là một dự án lớn.

+2

Không shure: nguồn của bất kỳ trong productiona và duy trì e-mail khách hàng như thunderbird sẽ được áp đảo rất lớn cho một để có thể nắm bắt về cách tiến hành, hoặc tìm hiểu bất cứ điều gì từ đó. Ông đã neeed để có được một ví dụ "e-mail của khách hàng ... đó là ecatly những gì ông đang có ý định viết. – jsbueno

+0

Tôi đồng ý.Điều này có thể được nhân lên kể từ khi Thunderbird có thể được thực hiện trong C++, và nếu họ không ghi lại nó, mã có thể có vẻ gì đó hoàn toàn khác với nhiều ngôn ngữ giống như C++. Điều này càng trở nên tồi tệ hơn nếu họ sử dụng nhiều thực hành bạn thấy được hướng đến các chương trình C –

3

Không khuyến khích bạn, nhưng tại sao bạn muốn tạo ứng dụng email?

A các ứng dụng email đã tồn tại, cho mọi thứ mà khách hàng muốn. Một khách hàng toàn diện, một khách hàng nhẹ, dòng lệnh, webmail, tất cả đã tồn tại.

Có lẽ bạn muốn cung cấp một số chức năng độc đáo cho người dùng của mình, nhưng tôi nghĩ bạn sẽ tốt hơn bằng cách viết một plugin, ví dụ cho Thunderbird. Hoặc nếu bạn thực sự quan tâm đến chính khách hàng, bạn nên cố gắng đóng góp trong một dự án đã tồn tại.


Nhưng trên chủ đề, văn bản cho khách hàng front-end chỉ là khó khăn như viết bất kỳ GUI, nhưng internals mail này là khá dễ dàng bằng Python, bởi vì nó có rất nhiều được xây dựng trong thư viện cho những thứ như IMAP, SMTP, POP3.

5

Tôi nghĩ rằng bạn sẽ tìm thấy hầu hết các khách hàng bộ phận quan trọng được đóng gói sẵn: hồi

Email - Tôi nghĩ rằng được bao phủ bởi rất nhiều các thư viện Python.

Gửi email - Điều này sẽ không khó và rất có thể cũng được bao gồm.

Định dạng email - Tôi biết điều này được đề cập vì tôi vừa sử dụng nó để phân tích các email đơn và nhiều phần cho khách hàng.

Hiển thị email - Tôi sẽ quay cho trình kết xuất HTML của một số loại. Có một giao diện Python cho trình kết xuất từ ​​dự án Mozilla. Tôi đoán có những công cụ dựng hình khác có giao diện python. Tôi biết wxWidgets có một số tiện ích HTML đơn giản và sẽ có trọng lượng nhẹ hơn rất nhiều. Hãy suy nghĩ về nó, công cụ Mozilla có thể có một loạt các chức năng khác mà bạn cần. Bạn sẽ phải nghiên cứu từng bộ phận.

Có nhiều thứ khác so với những gì được liệt kê ở trên. Giống như bất cứ thứ gì đáng giá trong khi nó sẽ không được xây dựng trong một ngày. Tôi sẽ đặt ra chính xác những gì bạn muốn nó làm. Sau đó bắt đầu đặt cùng một mẫu thử nghiệm. Chỉ cần xây dựng một khung công tác đơn giản để thực hiện những điều cơ bản. Giống như chỉ có nó hỗ trợ phần văn bản của một tin nhắn không có html. Sau đó xây dựng trên đó.

Tôi ngạc nhiên trước sự giàu có của các mô-đun mã hóa có sẵn với Python. Tôi cần lọc các thư email html, các bảng định kiểu phân tích cú pháp, kiểu nhúng và toàn bộ các thứ khác. Tôi tìm thấy chỉ là về mọi chức năng tôi cần trong thư viện Python ở đâu đó. Tôi đã đặc biệt hạnh phúc khi tôi phát hiện ra rằng một số tờ css được gzipped rằng có một mô-đun cho điều đó!

Vì vậy, nếu bạn nghiêm túc về việc đào sâu vào. Bạn sẽ học được LOT. :)

1

Tùy thuộc vào cấp độ bạn muốn xây dựng ứng dụng khách. Bạn có thể nhanh chóng roi một cái gì đó lên với các thư viện như smtplib để xử lý conection/dữ liệu. Và tk cho GUI. Nhưng một lần nữa tất cả phụ thuộc vào mức độ kết thúc sau của bạn.

Công cụ cơ bản nhanh cho chính bạn: Dễ dàng. (Có thư viện)
Viết ứng dụng email khách có đầy đủ tính năng: Khó.

Thay vì sử dụng thư viện, bạn cũng có thể tìm thấy một dự án mã nguồn mở mà bạn có thể đóng góp. Tôi khuyên bạn nên xem xét Mailpile

Các vấn đề liên quan