使用telnetlib 发送html格式邮件后格式发生改变,如何保持原格式发送?
之前使用smtplib + 163邮件发送测试报告,但是最近提出使用公司邮箱进行发送的需求,在使用smtplib报错又找不到原因的情况下无奈使用Telnet的方式进行发送邮件,于是便使用python提供的telnetlib,目前情况如下:
1.发送邮件没有问题
2.因为我是用htmltestrunner生成的html测试报告,但是收到邮件后发现测试失败的超链接是打开状态,之前报告中通过为绿色的字体北京也不见了,详见如图:
之前的效果
使用telnet方式发送以后
我的代码如下:
说明:我直接将生成的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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论