花了我一段时间,但以下内容似乎有效:
def send_mail_multi(headers, text, msgHtml="", orig=None): """ """ msg = MIMEMultipart('mixed') # Create message container - the correct MIME type is multipart/alternative. body = MIMEMultipart('alternative') for k,v in headers.items(): if isinstance(v, list): v = ', '.join(v) msg.add_header(k, v) # Attach parts into message container. # According to RFC 2046, the last part of a multipart message, in this case # the HTML message, is best and preferred. if orig is not None: text, msgHtml2 = append_orig_text(text, msgHtml, orig, False) # Fix subject msg["Subject"] = "RE: "+orig["Subject"].replace("Re: ", "").replace("RE: ", "") msg['In-Reply-To'] = orig["Message-ID"] msg['References'] = orig["Message-ID"]#+orig["References"].strip() msg['Thread-Topic'] = orig["Thread-Topic"] msg['Thread-Index'] = orig["Thread-Index"] body.attach(MIMEText(text, 'plain')) if msgHtml != "": body.attach(MIMEText(msgHtml2, 'html')) msg.attach(body) send_it(msg)def append_orig_text(text, html, orig, google=False): """ Append each part of the orig message into 2 new variables (html and text) and return them. Also, remove any attachments. If google=True then the reply will be prefixed with ">". The last is not tested with html messages... """ newhtml = "" newtext = "" for part in orig.walk(): if (part.get('Content-Disposition') and part.get('Content-Disposition').startswith("attachment")): part.set_type("text/plain") part.set_payload("Attachment removed: %s (%s, %d bytes)" %(part.get_filename(), part.get_content_type(), len(part.get_payload(depre=True)))) del part["Content-Disposition"] del part["Content-Transfer-Encoding"] if part.get_content_type().startswith("text/plain"): newtext += "n" newtext += part.get_payload(depre=False) if google: newtext = newtext.replace("n","n> ") elif part.get_content_type().startswith("text/html"): newhtml += "n" newhtml += part.get_payload(depre=True).depre("utf-8") if google: newhtml = newhtml.replace("n", "n> ") if newhtml == "": newhtml = newtext.replace('n', '<br/>') return (text+'nn'+newtext, html+'<br/>'+newhtml)
该代码需要一点整理,但是Outlook可以正确显示它(带有“下一个/上一个”选项)。无需
From, Send, To,Subject手动创建标题,只需附加工作内容即可。
希望这可以节省别人的时间
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)