Tôi muốn kích hoạt một hành động nhất định khi nhận được email từ địa chỉ cụ thể với chủ đề cụ thể. Để có thể làm như vậy, tôi cần phải thực hiện theo dõi hộp thư của mình, kiểm tra mọi thư đến (cụ thể là tôi sử dụng gmail). cách dễ nhất để làm điều đó là gì?Kiểm tra email bằng Python
Trả lời
Gmail cung cấp khả năng kết nối qua POP mà bạn có thể bật trong bảng cài đặt gmail. Python có thể tạo các kết nối qua POP khá dễ dàng:
import poplib
from email import parser
pop_conn = poplib.POP3_SSL('pop.gmail.com')
pop_conn.user('username')
pop_conn.pass_('password')
#Get messages from server:
messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)]
# Concat message pieces:
messages = ["\n".join(mssg[1]) for mssg in messages]
#Parse message intom an email object:
messages = [parser.Parser().parsestr(mssg) for mssg in messages]
for message in messages:
print message['subject']
pop_conn.quit()
Bạn chỉ cần chạy tập lệnh này dưới dạng công việc định kỳ. Bạn không chắc chắn về nền tảng bạn đang sử dụng để YMMV thực hiện như thế nào.
Tôi đã tìm thấy pretty good snippet khi tôi muốn thực hiện điều tương tự này (và ví dụ sử dụng gmail). Ngoài ra, hãy xem google search results về điều này.
Liên kết bị hỏng. – Elazar
cùng một liên kết từ web.archive.org: [Trình kiểm tra máy chủ email nhanh và bẩn, trăn] (http://web.archive.org/web/20090119142342/http://snippets.dzone.com/posts/show/4024) – davedwards
Gmail cung cấp nguyên tử feed cho thư email mới. Bạn sẽ có thể theo dõi điều này bằng cách xác thực với py cURL (hoặc một số thư viện net khác) và kéo xuống nguồn cấp dữ liệu. Thực hiện yêu cầu GET cho mỗi thư mới sẽ đánh dấu nó là đã đọc, vì vậy bạn sẽ không phải theo dõi email nào bạn đã đọc.
Bất kỳ ý tưởng nào về cách gửi thông tin phù hợp để được ủy quyền? – PascalVKooten
@PascalvKooten trả lời muộn, nhưng định dạng là https: //
@Whitebird Nó vẫn có vẻ đáng để điều tra. Tôi đoán sự quan tâm của tôi về điều này là không đồng bộ; bây giờ tôi có một câu trả lời tôi vẫn có thể gây rối với nó^_^Cảm ơn! – PascalVKooten
Mặc dù không phải Python cụ thể, tôi luôn yêu thích procmail ở bất cứ đâu tôi có thể cài đặt nó ...!
Chỉ sử dụng như một số dòng hành động cho các điều kiện bạn chọn | pathtoyourscript
(ống AKA thanh dọc theo sau là tập lệnh bạn muốn thực hiện trong các trường hợp đó) và thư của bạn được chuyển theo đường ống, trong điều kiện bạn chọn, kịch bản của sự lựa chọn của bạn, để nó làm bất cứ điều gì nó muốn - khó nghĩ ra cách tiếp cận tổng quát hơn để "kích hoạt hành động bạn chọn khi nhận thư đáp ứng các điều kiện cụ thể của bạn !! Tất nhiên không có giới hạn bao nhiêu điều kiện bạn có thể kiểm tra xem có bao nhiêu dòng hành động mà một điều kiện duy nhất có thể kích hoạt (chỉ cần kèm theo tất cả các dòng hành động mà bạn muốn trong các dấu ngoặc đơn { }
), v.v.
Procmail thực sự sẽ không giải quyết được vấn đề kích hoạt hành động (trừ khi hành động được đề cập đang gửi một tin nhắn). –
@J. Peterson, bạn đang đùa, phải không ?! '| pathtoyourscript' và bạn có thể bắt đầu kịch bản của bạn lựa chọn và gửi thư của bạn đến nó khi điều kiện yêu thích của bạn hài lòng, và kịch bản có thể làm bất cứ điều gì nó muốn - làm thế nào là không "kích hoạt một hành động" ?! –
Gần đây tôi đã giải quyết vấn đề này bằng cách sử dụng procmail và python
Đọc tài liệu dành cho procmail. Bạn có thể nói với nó để gửi tất cả các email gửi đến cho một kịch bản python như thế này trong một procmail đặc biệt tập tin cấu hình
:0:
| ./scripts/ppm_processor.py
Python có một "email" gói sẵn mà có thể làm bất cứ điều gì bạn có thể muốn làm gì với email. Đọc trên những cái sau ....
from email.generator import Generator
from email import Message
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.mime.multipart import MIMEMultipart
Con người dường như được bơm lên về Lamson:
https://github.com/zedshaw/lamson
Đây là một máy chủ SMTP viết hoàn toàn bằng Python. Tôi chắc rằng bạn có thể tận dụng điều đó để làm mọi thứ bạn cần - chỉ cần chuyển tiếp thư gmail tới máy chủ SMTP đó và sau đó thực hiện những gì bạn sẽ làm.
Tuy nhiên, tôi nghĩ rằng có thể dễ nhất để thực hiện đề xuất nguồn cấp dữ liệu ATOM ở trên.
EDIT: Lamson đã bị bỏ rơi
cá hồi là một ngã ba, cố gắng để đạt đến python 3 - nó gần đây đã được xúc động - https://github.com/moggers87/salmon – user2692263
print('please enter str')
def email(n=str):
if ('@' and '.') in n:
z=n.find('@')
c=n.find('.')
if type(n[:z] and n[z:c] and n[c:])==str:
print('valid email')
else:
print('Invalid email')
else:
print('Invalid email')
Đó là xác thực email đáng sợ nhất, sai lệch nhất và không chính xác mà tôi từng thấy; nếu tôi chỉ ra lỗi của nó, tôi sẽ không biết bắt đầu từ đâu. Xin đừng bao giờ sử dụng nó, ở bất cứ đâu. – Todor
Tôi quay trở lại điều này, bởi vì một cái gì đó làm phiền tôi ... Vì vậy, không chỉ các thuật toán chung để xác nhận là thiếu sót, nhưng op hợp lý trong if-s là đồng bằng sai. nếu ('@' và '.') Trong n: sẽ luôn chỉ xem '.', Vì boolean op sẽ '@' và ',' sẽ đánh giá '.'. Và đừng khiến tôi bắt đầu vào ngày thứ hai nếu. – Todor
- 1. Kiểm tra email gửi
- 2. Kiểm tra tính hợp lệ của email trong django/python
- 3. Kiểm tra cookie bằng Python Flask
- 4. Bài kiểm tra đơn vị bằng Python
- 5. Kiểm tra kết nối FTP bằng Python
- 6. bash và telnet để kiểm tra email
- 7. T-SQL: kiểm tra định dạng email
- 8. Kiểm tra email Ruby (RFC 2822)
- 9. Làm cách nào để kiểm tra EOF bằng Python?
- 10. Kiểm tra vùng đường viền trong opencv bằng python
- 11. Kiểm tra xem có yêu cầu AJAX bằng Python
- 12. Kiểm tra số lượng thư Gmail chưa đọc bằng Python
- 13. Nhận email bằng Python và poplib
- 14. Nhận và gửi email bằng python
- 15. Proxy Kiểm tra trong python
- 16. Cách kiểm tra tiêu đề email bằng cách sử dụng RSpec
- 17. Kiểm tra xem chuỗi có chứa địa chỉ email không?
- 18. Cách kiểm tra logic email với Play Framework
- 19. Gửi kiểm tra email SMTP Microsoft Office 365 in .net
- 20. Kiểm tra địa chỉ email có giá trị trong System.Net.Mail.MailAddress
- 21. Có miền chuẩn để kiểm tra email "throwaway" không?
- 22. Tự động kiểm tra email bị trả lại qua POP3?
- 23. Cách kiểm tra nút radio được kiểm tra bằng JQuery?
- 24. Cấu hình email Jenkins - Kiểm tra cấu hình email thành công nhưng email không được người dùng nhận
- 25. Kiểm tra thuộc tính lớp python
- 26. Phân công bằng Python và kiểm tra chức năng bằng cách sử dụng elif
- 27. Kiểm tra bằng Python - cách sử dụng assertRaises trong thử nghiệm bằng cách sử dụng unittest?
- 28. shell scripting kiểm tra phiên bản python
- 29. Python "in" không kiểm tra loại?
- 30. Python - cách kiểm tra tải hệ thống?
Cảm ơn bạn rất nhiều !!! Nó hoạt động rất tốt. Vấn đề duy nhất tôi có bây giờ là tôi chỉ cần truy xuất thư mới. Tất nhiên có thể truy xuất tất cả các tin nhắn và sau đó so sánh danh sách cũ với danh sách mới. Tuy nhiên tôi tự hỏi nếu có một cách tốt hơn để làm điều đó, nếu có một phương pháp được xây dựng trong đó. – Sasha
Ở chế độ POP, gmail sẽ chỉ cho phép bạn truy xuất thư một lần. Các kết nối tiếp theo sẽ không hiển thị thông báo cho bạn. Trừ khi một trong 2 điều đang xảy ra: bạn có bật chế độ "chế độ gần đây" không? Xem tại đây: http://mail.google.com/support/bin/answer.py?answer=47948 về cách tắt tính năng đó. Hoặc, nếu gmail thực sự cung cấp cho bạn cùng một email mỗi lần, có thể là do phương thức quit() không được gọi trên kết nối pop của bạn. Có một ngoại lệ có lẽ đó là được nêu ra nhưng không bị bắt trước khi gọi bỏ thuốc lá? Sau đó, gmail sẽ cung cấp cho bạn cùng một thư. – mazelife
Đầu ra là Không. – GLHF