2013-02-02 19 views
5

Tôi muốn tạo thư text/plain bằng cách sử dụng định dạng Markdown và chuyển đổi thành thông báo multipart/alternative trong đó phần text/html đã được tạo từ Đánh dấu. Tôi đã thử sử dụng lệnh bộ lọc để lọc thông qua chương trình python tạo thông báo, nhưng có vẻ như thông báo không được gửi qua đúng cách. Đoạn mã dưới (đây chỉ là mã kiểm tra để xem nếu tôi có thể làm multipart/alternative tin nhắn nào cả.Sử dụng python trong mutt để tạo nhiều thư/email thay thế

import sys 
from email.mime.text import MIMEText 
from email.mime.multipart import MIMEMultipart 

html = """<html> 
      <body> 
      This is <i>HTML</i> 
      </body> 
      </html> 
""" 

msgbody = sys.stdin.read() 

newmsg = MIMEMultipart("alternative") 

plain = MIMEText(msgbody, "plain") 
plain["Content-Disposition"] = "inline" 

html = MIMEText(html, "html") 
html["Content-Disposition"] = "inline" 

newmsg.attach(plain) 
newmsg.attach(html) 

print newmsg.as_string() 

Thật không may, trong mutt, bạn chỉ nhận được nội dung thư gửi đến lệnh lọc khi bạn soạn (các tiêu đề Một khi tôi nhận được điều này làm việc, tôi nghĩ rằng phần markdown sẽ không quá khó khăn

Trả lời

1

Cập nhật: Ai đó đã viết một bài viết về cấu hình mutt để sử dụng với một kịch bản python. hashcash and mutt, bài viết đi qua cấu hình của muttrc và đưa ra ví dụ về mã.


Cũ câu trả lời

Liệu nó giải quyết vấn đề của bạn?

#!/usr/bin/env python 

from email.mime.text import MIMEText 
from email.mime.multipart import MIMEMultipart 


# create the message 
msg = MIMEMultipart('alternative') 
msg['Subject'] = "My subject" 
msg['From'] = "[email protected]" 
msg['To'] = "[email protected]" 

# Text of the message 
html = """<html> 
      <body> 
      This is <i>HTML</i> 
      </body> 
      </html> 
""" 
text="This is HTML" 

# Create the two parts 
plain = MIMEText(text, 'plain') 
html = MIMEText(html, 'html') 

# Let's add them 
msg.attach(plain) 
msg.attach(html) 

print msg.as_string() 

Chúng tôi lưu và kiểm tra chương trình.

python test-email.py 

Mà cho:

Content-Type: multipart/alternative; 
boundary="===============1440898741276032793==" 
MIME-Version: 1.0 
Subject: My subject 
From: [email protected] 
To: [email protected] 

--===============1440898741276032793== 
Content-Type: text/plain; charset="us-ascii" 
MIME-Version: 1.0 
Content-Transfer-Encoding: 7bit 

This is HTML 
--===============1440898741276032793== 
Content-Type: text/html; charset="us-ascii" 
MIME-Version: 1.0 
Content-Transfer-Encoding: 7bit 

<html> 
      <body> 
      This is <i>HTML</i> 
      </body> 
      </html> 

--===============1440898741276032793==-- 
+0

Tôi có thể lấy chương trình để chạy, nhưng tôi nghĩ rằng vấn đề của tôi là mutt không cho phép lọc của một thông điệp với tiêu đề trong soạn. Tôi nghĩ rằng làm điều này sẽ đòi hỏi một sự thay đổi để mutt. –

+0

do đó, nó không phải là một vấn đề python. Tôi bối rối. – karlcow

+0

Tôi cho rằng câu hỏi nên là 'làm cách nào để chạy tập lệnh này trong mutt sao cho thông báo 'multipart/alternative' sẽ được tạo'? –