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

Python smtplib主题在函数内部不起作用,python,smtplib,Python,Smtplib,在使用用于Python的smtplib时,我遇到了一个奇怪的现象。我正在使用f字符串和两个\n来分隔主题标题,编写一条简单的消息。这在函数外部工作正常,但在函数内部则表现不同 从功能外部发送的电子邮件主题为“功能外部” 从函数内部发送的电子邮件带有主题:“无主题” 为什么会这样 当然,我想解决这个问题,但最终我更感兴趣的是什么导致了这一问题 下面的代码。。。如果你想测试,只需输入你的gmail地址和密码 import smtplib login = "youremail@gmail.

在使用用于Python的smtplib时,我遇到了一个奇怪的现象。我正在使用f字符串和两个
\n
来分隔主题标题,编写一条简单的消息。这在函数外部工作正常,但在函数内部则表现不同

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

为什么会这样

当然,我想解决这个问题,但最终我更感兴趣的是什么导致了这一问题

下面的代码。。。如果你想测试,只需输入你的gmail地址和密码

import smtplib

login = "youremail@gmail.com"
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)
python缩进仅适用于命令,不适用于多行字符串。当你给空间时,它有不同的语法,但不一样。上述操作将产生相同的结果

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

import smtplib

login = "test@gmail.com"
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缩进仅适用于命令,不适用于多行字符串。当你给空间时,它有不同的语法,但不一样。上述操作将产生相同的结果

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

import smtplib

login = "test@gmail.com"
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()

你能添加失败的代码吗?你说的“但在一个”中行为不同是什么意思?行为的具体区别是什么?@PDHide-没有代码失败,只是在函数内外运行同一代码块的不同行为。@Korashen-谢谢,更新了有关电子邮件行为的更多信息。你能添加失败的代码吗?你说的“但在函数内部时行为不同”是什么意思?行为的具体区别是什么?@PDHide-没有代码失败,只是在函数内外运行同一代码块的不同行为。@Korashen-谢谢,更新了一些关于电子邮件行为的信息。在OP的代码中,用不同的方式说,标题名称不在不遵守SMTP协议的行的开头,因为它包含外部和内部作品,但具有不同的主题和格式。OPs认为两者的格式是相同的。换句话说,在OP的代码中,标题名称不在不遵守SMTP协议的行的开头,而是具有不同的主题和格式。OPs认为两者的格式相同