【问题标题】:Python smtplib - not sending with variablesPython smtplib - 不发送变量
【发布时间】: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


【解决方案1】:

这通常是版本问题,但您始终可以将 f 字符串替换为对我有用的 message = "I am sending this variable: {}".format(variable_name)

【讨论】:

    【解决方案2】:

    答案在这里:How to send variable value via email with smtplib in python3?

    使用 MIMEText 构造消息(使用“主题”、“发件人”和“收件人”)。 @tax evader 对主题的看法是正确的。我想它需要一个主题。

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2021-04-26
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 2020-07-25
    • 2021-08-18
    相关资源
    最近更新 更多