我正在做一个程序,将检索数据从谷歌表,这是一个消费日记多少我花了一个星期。成功检索数据后,程序将发送一封电子邮件给我,告诉我一周中每天的开销
我使用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)
Mon: Edeka 20.07
Tue: Edeka 9.77, Gym 60
...
Sun: Monitor 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)
是的,你的问题有解决办法。您应该继续使用
smptlib
,因为它是python中最好的电子邮件发送模块(如果还有其他模块的话)。但是,要解决您的问题,您可以在for day in range (2, num_days + 2):
之后添加day.pop(0)
。您可以找到关于这个here的更多信息。弹出后,可以使用join
方法,如:output="".join(goods)
把这个放在你放.pop()
东西的地方后面相关问题 更多 >
编程相关推荐