Python如何让traceback报错信息在HTML邮件中按换行展示
问题原因
format_exc()返回的异常堆栈信息的换行是普通\n字符,HTML渲染规则会自动忽略连续空白字符和换行符,所以最终邮件里所有内容会被合并成同一行显示。
解决方案
提供两种常用实现方式,按需选择即可:
方案1:用<pre>标签包裹异常内容(推荐)
<pre>标签的作用是保留文本原始的空格、换行格式,不需要修改异常内容本身,适配性最高,修改后的代码如下:
html = """ <html> <body> <b> Exception Details: </b> <pre style="white-space: pre-wrap; word-wrap: break-word;">{exp_message}</pre> </body> </html> """.format(exp_message=exp_message)
附加的style样式是为了避免超长代码行超出邮件可视区域自动换行,不需要可以去掉。
方案2:手动替换换行符为HTML换行标签
如果不想用<pre>标签,可以把异常内容里的所有\n替换为HTML可识别的<br>换行标签,代码如下:
html = """ <html> <body> <b> Exception Details: </b> {exp_message} </body> </html> """.format(exp_message=exp_message.replace('\n', '<br>'))
内容的提问来源于stack exchange,提问作者ansh1
相关产品推荐
相关产品推荐

