2011-12-07 47 views
8

Tôi đang gặp một số sự cố khi cố gắng trích xuất tất cả các tiêu đề email trong python. Tôi biết làm thế nào để có được những cái tôi đang tìm kiếm nhưng tôi muốn lưu tất cả các tiêu đề và tôi không chắc chắn làm thế nào để làm điều đó.Trích xuất tiêu đề email chỉ trong python

Tôi có nó được nạp vào một đối tượng email

import email 
f = open(kwargs['opt_emailfile']) 
msg = email.message_from_file(f) 
f.close() 

Vì vậy, tôi có thể nhận được

msg['To'] 
msg['From'] 

Nhưng tôi muốn tất cả các tiêu đề

Giải pháp

Đây là những gì Tôi đã cảm ơn câu trả lời

 f = open(kwargs['opt_emailfile']) 
     msg = email.message_from_file(f) 
     f.close() 

     parser = email.parser.HeaderParser() 
     headers = parser.parsestr(msg.as_string()) 

     for h in headers.items(): 
      print h 
+0

Bạn đã thử những gì cho đến nay? Bạn có một số mã hoạt động hoặc không hoạt động một phần không? – srgerg

+0

ok đã sửa bài đăng của tôi thành những gì tôi có cho đến nay – Mike

Trả lời

13

Sử dụng HeaderParser lẽ:

from email.parser import HeaderParser 
parser = HeaderParser() 
h = parser.parsestr(email) 

print h.keys() 

Tôi chỉ nhận thấy bạn thay đổi nội dung câu hỏi của bạn. Bạn thực sự có thể nhận được cùng một thông tin từ những gì bạn đã có mà không cần sử dụng HeaderParser. ví dụ. headers.items()will return danh sách 2 bộ dữ liệu có tiêu đề và giá trị tương ứng.

+0

Có thể không phải là một ý tưởng hay khi có một biến có tên là 'email' vì nó là tên của một mô-đun, ngay cả khi bạn không nhập trực tiếp' email'. – ccpizza

+1

Điều này (và "giải pháp" của OP trong chính câu hỏi) thực sự trả về tất cả các tiêu đề theo thứ tự, mặc dù kiểu 'keys()' ngụ ý hành vi giống như từ điển. – tripleee

+0

Điều chỉnh câu trả lời này thành câu hỏi có liên quan của tôi: http://stackoverflow.com/a/42090598/874188 – tripleee

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