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')
抱歉标题不好,我的代码目前遇到了一个奇怪的问题。当我使用我的应用程序发送电子邮件时,某些单词之间有奇怪的间距。
例如:"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')