You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django的EmailMessage设置content_type='html'时保留换行符?

解决方案:纯文本自动转带换行的HTML邮件内容

当然有办法不用手动编写HTML标签!你可以通过简单的自动转换逻辑,让纯文本内容自动适配HTML格式的换行需求,这里分享几个实用的方案:

1. 直接替换换行符为<br>标签

这是最通用的方法,几乎所有编程语言都支持。核心思路是把纯文本里的换行符(\n或\r\n)替换成HTML的换行标签<br>,再拼接上你的HTML签名即可。

举个Python的示例代码:

# 你的纯文本邮件内容
plain_text_body = "Welcome User, this is a welcome email.\nGlad to have you on board!"
# 替换换行符为HTML换行标签
html_body = plain_text_body.replace("\n", "<br>")
# 拼接HTML签名
html_body += """<br><br>
---
<p>Best Regards,<br>
Your Team</p>"""

这样处理后,纯文本里的换行就会在HTML邮件中正常显示,完全不用手动写标签。

2. 用<pre>标签保留原始格式(适合带缩进/多格式的文本)

如果你的纯文本有缩进、列表这类格式,用<pre>标签可以直接保留所有原始排版,再配合CSS调整字体和自动换行:

<div style="font-family: Helvetica, sans-serif;">
  <pre style="white-space: pre-wrap; margin: 0;">
Welcome User, this is a welcome email.
Here's what you can do next:
  - Check your inbox for verification
  - Explore our dashboard
  - Contact support if needed
  </pre>
  <br><br>
  <p>---<br>Your Signature Here</p>
</div>

white-space: pre-wrap属性会让内容超出容器宽度时自动换行,避免横向滚动,体验更友好。

3. 利用模板引擎的内置过滤器(如果你用模板工具)

如果你的项目用了Jinja2、Handlebars这类模板引擎,它们大多自带文本转HTML换行的过滤器,比如Jinja2的nl2br:

<!-- 模板文件内容 -->
{{ plain_text_content | nl2br }}
<br><br>
<p>---<br>Your Signature Here</p>

你只需要把纯文本内容传给模板,过滤器会自动帮你把换行符转成<br>标签,非常省心。

这些方案都能让你继续使用纯文本编写邮件主体,同时自动生成符合要求的HTML格式,完美解决你既要HTML签名又要保留纯文本换行的需求。

内容的提问来源于stack exchange,提问作者Milano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 02:59:10