Python 电子邮件发件人应用程序在 HTML 模板中的单词之间随机出现奇怪的间距

Python Email Sender App gives random weird spacing between words in HTML Template

抱歉标题不好,我的代码目前遇到了一个奇怪的问题。当我使用我的应用程序发送电子邮件时,某些单词之间有奇怪的间距。

例如:"Feel free to use our stor age for xx days"

空格通常出现在不同的单词上,具体取决于收件人的姓名。我猜收件人姓名的长度是其中的一个因素,因为电子邮件以问候语开头(例如,你好 John Doe,)

我刚刚构建的是使用 Python 的 smptlib 库,我目前将模板存储在 MySQL。

Python 代码基本上是这样的:

server = smtplib.SMTP(mailServer)
msgContent = rawHTMLFromDb.replace('{fullname}', name)

message = MIMEText(msgContent, 'html')
message['From'] = sendFrom
message['To'] = sendTo
message['Subject'] = subject

msg_full = message.as_string()

server.sendmail(sendFrom, sendTo, msg_full)

我不确定是否有任何影响,但我正在从存储在 LONGTEXT 数据类型列中的 MySQL 中提取模板。

我也已经在替换后立即进行了打印,并确认不存在替换和奇怪的间距。只能在邮件客户端上查看。

编辑: 有关 msgContent

的更多详细信息

看起来像这样:

<!DOCTYPE html><html><head><style>..longCSS</style></head><body><p>Hi {fullname}</p><table>Several other content here.</table></body></html>

CSS 对齐文本 - 强制文本与容器的边缘对齐 - 这会导致异常的内部间距。请参阅下面的代码片段进行演示。

p {
  text-align: justify;
  width: 275px
}
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse porttitor, metus nec tempus lobortis, magna ipsum viverra odio, nec aliquet velit eros sed erat. Etiam non gravida lacus. Morbi a sem convallis lacus elementum ultricies.</p>

我仍然不知道发生了什么,但我最初只是将我的 html 代码直接复制并粘贴到 MySQL Workbench 中。

当我编写直接插入文件内容的脚本时,问题没有出现。所以我猜直接复制粘贴我的内容会在代码中插入一些奇怪的格式。

这是我制作的脚本:

import pymysql
from database import Database

db = Database()
conn = db.get_conn()

templatePath = r'<projectPath>\index.html'

tmp = (open(templatePath, mode='r'))

with conn.cursor() as cur:
    updateScript = "UPDATE email_templates SET html = %s WHERE id = 7"

    cur.execute(updateScript, (tmp.read()))
    cur.close()
    conn.commit()
    print('Template update success')