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

2024-09-30 20:35:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个程序,将检索数据从谷歌表,这是一个消费日记多少我花了一个星期。成功检索数据后,程序将发送一封电子邮件给我,告诉我一周中每天的开销

我的消费日记照片: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)

Mon: Edeka 20.07

Tue: Edeka 9.77, Gym 60

...

Sun: Monitor 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)

Tags: 数据in程序列表for电子邮件emaildays
1条回答
网友
1楼 · 发布于 2024-09-30 20:35:16

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

相关问题 更多 >