使用python发送电子邮件:如何形成邮件?

时间:2019-06-12 19:25:46

标签: python string email project gspread

我正在制作一个程序,该程序将从google sheet中检索数据,这是我每周花费多少的支出日记。成功检索数据后,程序将向我发送一封电子邮件,告知我一周中每天花费的金额。

我的消费日记的照片:enter image description here

我正在使用 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

这是到达我的邮箱的电子邮件照片。 我希望第一个要素不显示任何我购买的商品,不包括日期。  enter image description here

如何形成我的电子邮件消息,使其像上面的照片一样发送?

我目前正在使用 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)

1 个答案:

答案 0 :(得分:1)

是的,有解决您问题的方法。您应该继续使用smptlib,因为它是python中最好的电子邮件发送模块(如果还有其他模块)。但是,要解决您的问题,您可以在day.pop(0)之后添加for day in range (2, num_days + 2):,可以找到有关此here的更多信息。弹出后,您可以像这样使用join方法:output="".join(goods) 将其放在放置.pop()东西

的地方之后