【发布时间】:2021-12-27 22:34:55
【问题描述】:
我正在尝试使用 smtplib 库发送电子邮件。它工作正常,但如果我的消息包含一个固定字符串 + 变量,它就不起作用。
这是我的代码:
destinationEmail = 'destination@gmail.com'
server = smtplib.SMTP("smtp.gmail.com", 587)
server.starttls()
server.login("me@gmail.com", "password")
message = f"I am sending this variable: {variableName}"
server.sendmail("me@gmail.com", destinationEmail, message)
使用上面的代码不起作用。我也尝试过使用这种格式的消息:
message = "I am sending this variable: " + variableName
它也不起作用。如果我的消息没有变量,则发送成功,例如:
message = "testing"
我尝试过的另一件事是单独发送变量,例如:
message = variableName
这行得通!所以我真的很困惑这里有什么问题。似乎它不想发送具有固定字符串 + 变量的消息。顺便说一句,我使用的变量是字符串类型。即使我在变量周围使用 str(),它也不起作用。
【问题讨论】:
-
您上面显示的代码必须有效。它们只是字符串。你这里还有其他问题。也许你应该向我们展示真实的代码。现在
f"xxx"字符串是该语言相对较新的添加。如果你有一个非常旧的 Python,它们将无法工作,但你会得到一个语法错误。 -
您能否进一步说明它是如何不起作用的?它会抛出错误还是发送意外消息?
-
'真正的代码'是什么意思哈哈?我发布的代码正是我正在运行的,我只更改了电子邮件和密码(显然......)。是的,f-strings 是新的,这也是我尝试字符串连接的原因。我正在使用 python 3.10 顺便说一句。
-
我认为 smtp gmail 可能需要
Subject:标头才能发送消息。否则,它将表现得非常不可预测。您能否尝试将message更改为message = "Subject: Some subject\n\nI am sending this variable: " + variableName而不是message = "I am sending this variable: " + variableName。这行得通吗? -
我是个白痴 :( 我想通了,这对我有帮助:stackoverflow.com/questions/54374258/…
标签: python python-3.x smtplib