diff --git a/CHANGELOG.md b/CHANGELOG.md index b45a2dde..75d2e35f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ # CHANGE LOG +## main branch + +- 修复 smtp imap proxy sever 的一些 bug + ## v0.5.1 - 添加 `mail-parser-wasm-worker` 用于 worker 解析邮件, [文档](https://temp-mail-docs.awsl.uk/zh/guide/feature/mail_parser_wasm_worker.html) diff --git a/smtp_proxy_server/parse_email.py b/smtp_proxy_server/parse_email.py index 861ab144..a86aa7e4 100644 --- a/smtp_proxy_server/parse_email.py +++ b/smtp_proxy_server/parse_email.py @@ -47,16 +47,26 @@ def parse_email(raw: str) -> EmailModel: def generate_email_model(item: dict) -> EmailModel: email_json = json.loads(item["raw"]) message = MIMEMultipart() - message['From'] = f"{email_json["from"]['name']} <{ - email_json["from"]['email']}>" - message['To'] = ", ".join( - [f"{to['name']} <{to['email']}>" for to in email_json["personalizations"][0]["to"]]) + if email_json.get("version") == "v2": + message['From'] = f"{email_json["from_name"]} <{item["address"]}>" if email_json.get( + "from_name") else item["address"] + message['To'] = f"{email_json["to_name"]} <{email_json["to_mail"]}>" if email_json.get( + "to_name") else email_json["to_mail"] + message.attach(MIMEText( + email_json["content"], + "html" if email_json.get("is_html") else "plain" + )) + else: + message['From'] = f"{email_json["from"]['name']} <{ + email_json["from"]['email']}>" + message['To'] = ", ".join( + [f"{to['name']} <{to['email']}>" for to in email_json["personalizations"][0]["to"]]) + message.attach(MIMEText( + email_json["content"][0]["value"], + "html" if "html" in email_json["content"][0]["type"] else "plain" + )) message['Subject'] = email_json["subject"] message["Date"] = datetime.datetime.strptime( item["created_at"], "%Y-%m-%d %H:%M:%S" ).strftime("%a, %d %b %Y %H:%M:%S +0000") - message.attach(MIMEText( - email_json["content"][0]["value"], - "html" if "html" in email_json["content"][0]["type"] else "plain" - )) return parse_email(message.as_string())