Tôi đang làm việc để thiết lập tập lệnh chuyển tiếp thư đến tới danh sách người nhận.Mã hóa nội dung email Python 3
Dưới đây là những gì tôi có bây giờ:
tôi đọc email từ stdin (đó là cách postfix qua nó):
email_in = sys.stdin.read()
incoming = Parser().parse(email_in)
sender = incoming['from']
this_address = incoming['to']
tôi thử nghiệm cho nhiều phần dữ liệu:
if incoming.is_multipart():
for payload in incoming.get_payload():
# if payload.is_multipart(): ...
body = payload.get_payload()
else:
body = incoming.get_payload(decode=True)`
tôi thiết lập thông báo gửi đi:
msg = MIMEMultipart()
msg['Subject'] = incoming['subject']
msg['From'] = this_address
msg['reply-to'] = sender
msg['To'] = "[email protected]"
msg.attach(MIMEText(body.encode('utf-8'), 'html', _charset='UTF-8'))
s = smtplib.SMTP('localhost')
s.send_message(msg)
s.quit()
Điều này hoạt động khá tốt với các ký tự ASCII (văn bản tiếng Anh), chuyển tiếp nó và tất cả.
Khi tôi gửi các ký tự không ascii tuy nhiên, nó mang lại cho trở lại vô nghia (tùy thuộc vào byte ứng dụng email hoặc cơ quan đại diện ascii của utf-8 ký tự)
gì có thể là vấn đề? Nó ở bên vào hay bên đi?
Bạn không cần phải mã hóa tải trọng cho phần 'MIMEText'; nó sẽ mã hóa cho bạn, hãy chọn một ký tự phù hợp. Không phải là điều này thay đổi đầu ra. –