首页 > 解决方案 > 使用 Python 发送电子邮件实用程序在 python3 中添加额外的字符(!)

问题描述

我在我的python脚本中使用下面的源代码来发送一封电子邮件,该电子邮件基本上读取了html文件并将其发送到电子邮件中。问题是当电子邮件来的时候,它显示了电子邮件上的内容,它有一些额外的(!)单词/字符。我想也许 html 有但是在检查 html 文件后没有这样的单词/字符。

我正在创建多个 html 小文件,并将它们合并为一个 html 文件并在电子邮件中发送或显示这些内容。

import smtplib
from email.mime.text import MIMETEXT
from email.mime.multipart import MIMEMultipart

AUTH_FROM_EMAIL = 'abc@email.com'
MAIL_HOST = 'smtp-abc.net'

def drop_email(sfrom=None,lstto=None,sub=None,body=None):
    msg = MIMEMultipart('alternative')
    
    msg[''] = subj
    msg[''] = sfrom
    for sto in sendtolst:
    msg['To'] = sto

ishtml = 'html' in body.lower()
msg.attach(MIMETEXT(body, 'html' if ishtml else plain))

s = smtplib.SMTP(MAIL_HOST)
s.sendmail(AUTH_FROM_EMAIL, sendtolist, msg.as_string())


def main()
    a(name)
    sfrom = 'abc.text@abc.com'
    sto1 = 'next.time@abc.com'
    text = 'Greeting'
    html_file = open('abc.html')
    html = html_file.read()
    subj = 'hello'
    try:
       drop_email(sfrom, [sto1], subj,html)
    except (Exception) as e:
       print(e)

输出(html表)类似的东西(第二行显示!在电子邮件中,而html文件没有这个:

 ABC       ID    TYPE   DATE        TS
 201-0403  124   MICE   20211004    201-01-04 09:30:00
 201-0403  123   NICE   202!11004   201-01-04 10:30:00
 201-0403  121   MICE   20211004    201-01-04 10:30:00

<html>
<style> table , th, td {border:1px solid black;}</style>
<body>
<h2>TABLE STATUS 20211004</h2>
<table>
<tr>
<th style="background-color:#00FF00">ABC</th>
<th style="background-color:#00FF00">ID</th>
<th style="background-color:#00FF00">TYPE</th>
<th style="background-color:#00FF00">DATE</th>
<th style="background-color:#00FF00">TS</th>
</tr>
<tr><td>201-0403</td><td>124</td><td>MICE</td><td>20211004</td><td>201-01-04 09:30:00</td></tr>
<tr><td>201-0403</td><td>122</td><td>NCE</td><td>20211004</td><td>201-01-04 09:30:00</td></tr>
<tr><td>201-0403</td><td>123</td><td>NICE</td><td>20211004</td><td>201-01-04 09:30:00</td></tr>
<tr><td>201-0403</td><td>125</td><td>RICE</td><td>20211004</td><td>201-01-04 09:30:00</td></tr>
</table>
</body>
</html>

print(repr(msg.as_string())) 的输出:

'Content-Type: multipart/aternative; boundary="=========0711723306722683063=="\nMIME-Version: 1.0\n
Subject: HELLO\nFROM: abc@tetx.com\n
TO:unkonw@text.com\n\n--=============0711723306722683063==\n
Content-Type: text/html; charset="us-ascii"\nMIME-Version: 1.0\n
Content-Transfer-Encoding: 7bit\n\n
   <html>
    <style> table , th, td {border:1px solid black;}</style>
    <body>
    <h2>TABLE STATUS 20211004</h2>
    <table>
    <tr>
    <th style="background-color:#00FF00">ABC</th>
    <th style="background-color:#00FF00">ID</th>
    <th style="background-color:#00FF00">TYPE</th>
    <th style="background-color:#00FF00">DATE</th>
    <th style="background-color:#00FF00">TS</th>
    </tr>
    <tr><td>201-0403</td><td>124</td><td>MICE</td><td>20211004</td><td>201-01-04 09:30:00</td></tr>
    <tr><td>201-0403</td><td>122</td><td>NCE</td><td>20211004</td><td>201-01-04 09:30:00</td></tr>
    <tr><td>201-0403</td><td>123</td><td>NICE</td><td>20211004</td><td>201-01-04 09:30:00</td></tr>
    <tr><td>201-0403</td><td>125</td><td>RICE</td><td>20211004</td><td>201-01-04 09:30:00</td></tr>
    </table>
    </body>
    </html>\n\n

任何想法?

标签: pythonpython-3.x

解决方案


推荐阅读