Отправка писем с использованием Python: как сформировать сообщение? - PullRequest
1 голос
/ 12 июня 2019

Я создаю программу, которая будет извлекать данные из таблицы Google, которая представляет собой дневник расходов о том, сколько я трачу на неделю.После успешного извлечения данных программа отправит мне электронное письмо с информацией о том, сколько я трачу день за днем.

Фотография моего дневника расходов: 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)

Пн: Edeka 20.07

Вт: Edeka 9.77, Тренажерный зал 60

...

Вс: Монитор 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 Ответ

1 голос
/ 18 июня 2019

Да, есть решение вашей проблемы.Вы должны продолжать использовать smptlib, так как это лучший модуль отправки электронной почты в Python (если есть другие).Однако, чтобы решить вашу проблему, вы можете добавить day.pop(0) после for day in range (2, num_days + 2):. Подробнее об этом можно узнать здесь .После всплывающего окна вы можете использовать метод join следующим образом: output="".join(goods) Поместите его после того места, куда вы положили .pop() вещь

...