如何在 python 3.6.2 中将更改的内容添加到自动邮件 (smtplib)?

How can I add changing content to an automated mail (smtplib) in python 3.6.2?

我想给自己发邮件。如何将内容更改为可变文本而不是静态文本?

import smtplib
import random
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

#food dictionary 

food = random.choice([spaghetti, pizza])

def mail():

    email_user = 'me'
    email_send = ['no1','no2']

    msg = MIMEMultipart()
    msg['From'] = email_user
    msg['To'] = ','.join(email_send)
    msg['Subject'] = 'food for the week!'

    body = 'why can't I get my new content in here?!'

这是 (body=...) 我认为有问题的部分。如何将 'food' 从 random.choice() 部分放入其中而不收到错误消息?或者有更好的方法吗?

msg.attach(MIMEText(body,'plain'))
text = msg.as_string()
mail =smtplib.SMTP("smtp.gmail.com", 587)
mail.ehlo()
mail.starttls()
mail.login(email_user,"pwd")
mail.sendmail(email_user,email_send, text)
mail.close()
mail()

通过向函数传递一个要使用的值。还要注意,函数定义应该在它们被使用之前。

import smtplib
import random
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText


def mail(food):

    email_user = 'me'
    email_send = ['no1','no2']

    msg = MIMEMultipart()
    msg['From'] = email_user
    msg['To'] = ','.join(email_send)
    msg['Subject'] = 'food for the week!'

    body = food
    msg.attach(MIMEText(body,'plain'))

    text = msg.as_string()

    mail =smtplib.SMTP("smtp.gmail.com", 587)

    mail.ehlo()

    mail.starttls()

    mail.login(email_user,"pwd")

    mail.sendmail(email_user,email_send, text)

    mail.close()

    mail()
#food dictionary 

food = random.choice([spaghetti, pizza])
mail(food)