Python smtplib主题在函数内部不起作用

平衡力学

使用smtplib for Python时,我遇到一种奇怪的现象。我正在使用f字符串和两个\n定界主题标头来编写一条简单的消息在函数外部时,此方法工作良好,但在函数内部时,其行为不同。

从功能外部发送的电子邮件带有主题:“功能之外”从功能内部发送的电子邮件带有主题:“无主题”

为什么是这样?

当然,我想解决这个问题,但是最终我对造成这种情况的原因更感兴趣!

下面的代码...如果您想测试,只需拍一下您的Gmail地址和密码即可。

import smtplib

login = "[email protected]"
password = "yourpassword"

name = "name"

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(login, password)


def sendMail():
    message = f"""\
    Subject: Sent from inside a function
    To: {login}
    From: {login}

    Hello {name},
    This is sent from inside a function"""

    server.sendmail(login, receiver, message)

sendMail()


message = f"""\
Subject: Outside a function
To: {login}
From: {login}

Hello {name},
This is sent from outside a function"""

server.sendmail(login, receiver, message)
磷酸二氢
import smtplib

login = "[email protected]"
password = "test"
receiver=login

name = "name"

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(login, password)


def sendMail():
    message = f"""\
Subject: Sent from inside a function
To: {login}
From: {login}

Hello {name},
This is sent from inside a function"""

    server.sendmail(login, receiver, message)


sendMail()

python缩进仅适用于不适用于多行字符串的命令。当您提供空间时,它具有不同的语法。上面将创建相同的结果

https://stackoverflow.com/a/2504457/6793637

如果您不想不必要的缩进,请从第一行开始

import smtplib

login = "[email protected]"
password = "test"
receiver=login

name = "name"

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(login, password)


def sendMail():
    message = f"""Subject: Sent from inside a function
    To: {login}
    From: {login}

    Hello {name},
    This is sent from inside a function"""

    server.sendmail(login, receiver, message)


sendMail()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章