代码之家  ›  专栏  ›  技术社区  ›  Dominic

Python Email Sender应用程序在HTML模板中提供了单词之间的随机奇怪间距

  •  0
  • Dominic  · 技术社区  · 7 年前

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

    xx天“

    我刚刚构建的是使用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 数据类型列。

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

    编辑: 有关msgContent的更多详细信息

    <!DOCTYPE html><html><head><style>..longCSS</style></head><body><p>Hi {fullname}</p><table>Several other content here.</table></body></html>
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   snakecharmerb    7 年前

    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>
        2
  •  0
  •   Dominic    7 年前

    我仍然不知道发生了什么,但我最初只是将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')