使用telnetlib 发送html格式邮件后格式发生改变,如何保持原格式发送?

发布于 2022-09-12 00:11:27 字数 1447 浏览 29 评论 0

之前使用smtplib + 163邮件发送测试报告,但是最近提出使用公司邮箱进行发送的需求,在使用smtplib报错又找不到原因的情况下无奈使用Telnet的方式进行发送邮件,于是便使用python提供的telnetlib,目前情况如下:
1.发送邮件没有问题
2.因为我是用htmltestrunner生成的html测试报告,但是收到邮件后发现测试失败的超链接是打开状态,之前报告中通过为绿色的字体北京也不见了,详见如图:
之前的效果
before.jpg
使用telnet方式发送以后
after.jpg

我的代码如下:
说明:我直接将生成的html文件读到DATA后边
`

try:
    t = telnetlib.Telnet()
    t.open(mail_server,port)
except Exception as e:
    logger.error("failed to connection the mail server cause:{}".format(e))

t.read_until(b"220",timeout=10)
t.write(b"HELO smtp.abc.com\n")
t.read_until(b"250",timeout=10)
t.write(b"MAIL FROM:tester@abc.com\n")
t.read_until(b"250",timeout=10)
t.write(b"RCPT TO:lzz@abc.com\n")
t.read_until(b"250",timeout=10)
t.write(b"DATA\n")
t.read_until(b"354", timeout=10)
t.write(subject)
t.write(b"Content-Type: text/html;\n")
t.write(b"charset='UTF-8'\n")
t.write(b"Content-Transfer-Encoding: 7bit\n")
t.write(b"from:<tester@abc.com>\n")
t.write(b"to:<lzz@abc.com>\n")
t.write(b"\n")
# file_path是html文件
with open(file_path,mode="rb") as line:
    for cont in line.readlines():
        cont = bytes(cont + "\n")
        t.write(cont)
t.write(b"this a mail send by cicd for test\n")
t.write(b".\n")
result = t.read_very_eager().decode('ascii')
print(result)
t.read_until("250",timeout=10)
t.write("QUIT\n")
`

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文