首页 > 解决方案 > Python函数中的HTML代码不起作用

问题描述

我已经编写了几行代码来使用 smtplib 模块发送电子邮件。如果我按原样运行脚本:

import smtplib

message = """From: Sender <sender@randomemail.com>
To: Receiver <receive@randomemail.com>
Content-type: text/html
Subject: It works!
<b>It works!</b>\n
<br/>
<br/>
Do not reply to this email or god will strike you down.
"""

server = smtplib.SMTP('mysmtpserver')
sender = 'sender'
receiver = 'receive'

server.set_debuglevel(True)

server.sendmail(sender, receiver, message)

它按预期执行。而且我收到的电子邮件中确实有 HTML 格式。

但是,如果我将代码作为函数放在“更大”文件中以及其他函数中:

def emailer():
    import smtplib

    message = """From: Sender <sender@randomemail.com>
    To: Receiver <receive@randomemail.com>
    Content-type: text/html
    Subject: It works!
    <b>It works!</b>\n
    <br/>
    <br/>
    Do not reply to this email or god will strike you down.
    """

    server = smtplib.SMTP('mysmtpserver')
    sender = 'sender'
    receiver = 'receive'

    server.set_debuglevel(True)

    server.sendmail(sender, receiver, message)

然后调用函数:

emailer()

我收到的电子邮件没有 HTML 格式,主题和正文完全混乱,然后被我的电子邮件提供商过滤为垃圾邮件。

我确实需要一些关于如何解决这个问题的解释,如果我能以某种方式改进我创造的东西,我也需要建议。

谢谢

标签: pythonhtmlemailformatting

解决方案


您的第二个版本在消息字符串中有大量额外的空格(每行开头的空格)。

第一个版本:

From: Sender <sender@randomemail.com>
To: Receiver <receive@randomemail.com>
Content-type: text/html
Subject: It works!
<b>It works!</b>\n
<br/>
<br/>
Do not reply to this email or god will strike you down.

第二个版本:

From: Sender <sender@randomemail.com>
    To: Receiver <receive@randomemail.com>
    Content-type: text/html
    Subject: It works!
    <b>It works!</b>\n
    <br/>
    <br/>
    Do not reply to this email or god will strike you down. 

如果两封电子邮件的内容有任何区别,那很可能就是这样。


推荐阅读