如何使用Python发送无需HTML的格式化邮件?
无需HTML实现Python发送格式化邮件的方法
首先明确:终端用的ANSI转义字符在邮件里行不通,因为邮件客户端不会解析这些终端专属的控制序列,只会把它们当成普通文本显示。要实现类似Gmail网页端直接格式化纯文本的效果,可以用以下两种方案:
方案一:利用邮件客户端的纯文本标记识别
主流邮件客户端(包括Gmail)会自动识别纯文本中的简单标记,转换成对应格式,常用标记:
**内容**→ 粗体*内容*→ 斜体_内容_→ 下划线[链接文本](链接地址)→ 可点击链接
示例代码
import smtplib from email.mime.text import MIMEText sender = "my@email.com" recipient = "your@email.com" # 编写带标记的纯文本内容 email_content = """Hi! 最近怎么样? **这是需要突出的粗体内容** *这是斜体强调的文本* _这是带下划线的内容_ 你要的链接:[Python官方网站](http://www.python.org) ------------------------ 以上是本次邮件的全部内容 """ # 创建纯文本邮件对象 msg = MIMEText(email_content, 'plain') msg['Subject'] = "纯文本格式化测试邮件" msg['From'] = sender msg['To'] = recipient # 发送邮件 with smtplib.SMTP('localhost') as smtp_server: smtp_server.sendmail(sender, recipient, msg.as_string())
方案二:纯文本原生排版技巧
如果依赖客户端标记不够可靠,还可以用纯文本本身的排版方式实现格式化:
- 用等长的横线(
----------)做分隔线 - 用空格缩进区分层级
- 用大写字母或特殊符号标记标题
- 用列表符号(
-/*)整理条目
示例代码
import smtplib from email.mime.text import MIMEText sender = "my@email.com" recipient = "your@email.com" email_content = """=== 项目进度通知 === 您好: 以下是本周核心项目的进度更新: 1. 项目A: - 完成需求文档编写(100%) - 开始UI设计(30%) 2. 项目B: - 完成开发阶段(80%) - 待测试验收 ------------------------ 如有疑问请联系项目负责人 """ msg = MIMEText(email_content, 'plain') msg['Subject'] = "项目进度纯文本通知" msg['From'] = sender msg['To'] = recipient with smtplib.SMTP('localhost') as smtp_server: smtp_server.sendmail(sender, recipient, msg.as_string())
注意事项
- 纯文本格式化的效果依赖邮件客户端的支持,不同客户端可能有细微差异,但比ANSI转义字符的兼容性好得多
- 如果需要精确的格式控制(比如自定义字体、颜色),还是得用HTML,但你提到的Gmail直接格式化纯文本的场景,用上述两种方案就能实现类似效果
内容的提问来源于stack exchange,提问作者Test
相关产品推荐
相关产品推荐

