我正在制作一个程序,该程序将从google sheet中检索数据,这是我每周花费多少的支出日记。成功检索数据后,程序将向我发送一封电子邮件,告知我一周中每天花费的金额。
我正在使用 gspread 检索数据,并且能够使用for循环逐列检索数据
它为我提供了数据列表。 例如,如果我这样做
num_days = 7
goods = []
for day in range(2, num_days + 2):
goods.append(worksheet.col_values(day))
OUTPUT: [['Mon 04/08/2019', 'Edeka 20.07'], ['Tue 04/09/2019', 'Edeka 9.77', 'Gym 60'], ['Wed 04/10/2019', 'Party 5', 'Jiujitsu System 30', 'Jiujitsu card 5', 'Jiujitsu Monthly fee 54'], ['Thu 04/11/2019', 'Laundry 3.5', 'Part 7.5 Euro'], ['Fri 04/12/2019', 'Edeka 5.95', 'Laundry 2'], ['Sat 04/13/2019', 'Food Festival 20 ', 'DM Hair Roller 3.25', 'Rewe 9.97'], ['Sun 04/14/2019', 'Monitor 224.99']]
所以我能够逐列检索并将它们作为列表放在列表中。
那很好。但是我想以以下格式发送电子邮件。
EX)
星期一: 埃德卡20.07
星期二: 埃德卡9.77, 健身房60
...
Sun:监视器224.99
这是到达我的邮箱的电子邮件照片。 我希望第一个要素不显示任何我购买的商品,不包括日期。
如何形成我的电子邮件消息,使其像上面的照片一样发送?
我目前正在使用 smtplib 发送电子邮件,但我不知道如何仅将我购买的商品放入邮件中。
def send_email_for_spending(money_spent_week):
with smtplib.SMTP('smtp.gmail.com', 587) as smtp:
smtp.ehlo()
smtp.starttls()
smtp.ehlo()
smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
# title for your email
subject = "Here is how much you spent in this week."
# Number of Days
num_days = 7
goods = []
# it starts from 2 because column that has monday is 2nd
# column
for day in range(2, num_days + 2):
goods.append(worksheet.col_values(day))
message = f"""
MON:
{goods[0]}
TUE:
{goods[1]}
WED:
{goods[2]}
THU:
{goods[3]}
FRI:
{goods[4]}
SAT:
{goods[5]}
SUN:
{goods[6]}
"""
smtp.sendmail(EMAIL_ADDRESS, 'dudeindaegu@gmail.com', message)
答案 0 :(得分:1)
是的,有解决您问题的方法。您应该继续使用smptlib
,因为它是python中最好的电子邮件发送模块(如果还有其他模块)。但是,要解决您的问题,您可以在day.pop(0)
之后添加for day in range (2, num_days + 2):
,可以找到有关此here的更多信息。弹出后,您可以像这样使用join
方法:output="".join(goods)
将其放在放置.pop()
东西