Автоматизация доставки электронной почты - PullRequest
0 голосов
/ 06 февраля 2020

Я взял пример автоматизации из книги (Автоматизируйте задачи с помощью Python), которая состоит из открытия и чтения электронной таблицы и проверки, уплачена ли плата, если нет, отправьте электронное письмо клиенту, сообщив ему об этом. Но когда я запускаю код, он не показывает никакой ошибки, но также ничего не происходит. Буду признателен, если вы поможете мне, и при этом по-прежнему порекомендуете библиотеку для проведения процесса.

Следуйте приведенному ниже коду:

import openpyxl, smtplib, sys

wb = openpyxl.load_workbook('C:/temp/cobranca.xlsx')
sheet = wb['Sheet1']

lastCol = sheet.max_column
latestMonth = sheet.cell(row=1, column=lastCol).value

unpaidMembers = {}
for r in range(2, sheet.max_row + 1):
    payment = sheet.cell(row=r, column=lastCol).value
    if payment != 'ok':
        name = sheet.cell(row=r, column=1).value
        email = sheet.cell(row=r, column=2).value
        unpaidMembers[name] = email


smtpObj = smtplib.SMTP('mail.omnia.net.br', 465)
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.login('dp.contabil@omnia.net.br', sys.argv[1])

for name, email in unpaidMembers.items():
    body = "Subject: %s dues unpaid. \n Dear %s, \n Records show that you have not paid dues for %s. Please make this payment as soon as possible. Thank you!'" % (latestMonth, name, latestMonth)
    print('Sending email to %s...' % email)
    sendmailStatus = smtpObj.sendmail('dp.contabil@omnia.net.br', email, body)

    if sendmailStatus != {}:
        print('There was a problem sendind email to %s: %s' % (email, sendmailStatus))
        smtpObj.quit()

1 Ответ

0 голосов
/ 06 февраля 2020

Вот пример, который я использовал:

import smtplib

from string import Template

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

MY_ADDRESS = 'XYZ@gmail.com'
PASSWORD = 'YourPassword'


def get_contacts(filename):
    names = []
    emails = []
    with open(filename, mode='r', encoding='utf-8') as contacts_file:
        for a_contact in contacts_file:
            names.append(a_contact.split()[0])
            emails.append(a_contact.split()[1])
    return names, emails


def read_template(filename):
    with open(filename, 'r', encoding='utf-8') as template_file:
        template_file_content = template_file.read()
    return Template(template_file_content)


def main():
    names, emails = get_contacts('C:/Users/xyz/Desktop/mycontacts.txt')  # read contacts
    message_template = read_template('C:/Users/xyz/Desktop/message.txt')
    s = smtplib.SMTP(host='smtp.gmail.com', port=587)
    s.starttls()
    s.login(MY_ADDRESS, PASSWORD)
    for name, email in zip(names, emails):
        msg = MIMEMultipart()  # create a message
        message = message_template.substitute(PERSON_NAME=name.title())
        print(message)
        msg['From'] = MY_ADDRESS
        msg['To'] = email
        msg['Subject'] = "Sending mail to all"
        msg.attach(MIMEText(message, 'plain'))
        s.send_message(msg)
        del msg
    s.quit()
if __name__ == '__main__':
    main()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...