[PYTHON] Code pour envoyer du courrier basé sur la liste de diffusion Excel

Pourquoi tu aimes ça?

Il y a pas mal de soi-disant tâches, telles que la création d'une carte des étoiles pour le travail (comme la participation à une soirée en dehors du travail) et le fait d'encourager les personnes qui ne l'ont pas encore soumis sur cette base. J'ai donc décidé de le traiter avec Python. Si vous êtes une entreprise qui utilise Microsoft Office 365, vous pouvez le faire sans code comme celui-ci si vous utilisez Automate Flow, mais je l'ai préparé car aucun environnement ne peut être utilisé autour de moi.

Référencé

Que préparer

Préparez un fichier appelé "maillist.xlsx" comme indiqué ci-dessous. コメント 2020-09-11 144102.png

mail_send.py


import openpyxl, smtplib
from email import message

wb = openpyxl.load_workbook('maillist.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
lastCol = sheet.max_column
latest_month = sheet.cell(row=1, column=lastCol).value

#Vérifier le fichier Excel
unpaid_Members = {}
for r in range(2,sheet.max_row + 1):
    payment = sheet.cell(row=r, column=lastCol).value
    if payment != 'paid':
        name = sheet.cell(row=r, column=1).value
        email = sheet.cell(row=r, column=2).value
        unpaid_Members[name] = email

#Connectez-vous à votre compte de messagerie

smtp_host = 'smtp-mail.outlook.com'
smtp_port = 587
send_name = 'Master'
from_email ='[email protected]'
username = '[email protected]'
password = 'password'

smtp_obj = smtplib.SMTP(smtp_host, smtp_port)
smtp_obj.ehlo()
smtp_obj.starttls()
smtp_obj.login(username,password)

#Demander à l'utilisateur un mot de passe sur l'écran de ligne de commande
#Lorsque vous souhaitez le saisir, importez le package sys et exécutez le code ci-dessous.
# smtp_obj.login(username,sys.argv[1])

#envoyer un e-mail
for name, email in unpaid_Members.items():
    msg = message.EmailMessage()
    msg.set_content("""
{}m
Bon travail.
Il semble que les frais de participation à la soirée de bienvenue de la semaine prochaine n'aient pas encore été payés.
Veuillez confirmer.
    """.format(name))
    msg['From'] = '{}<{}>'.format(send_name, from_email)
    msg['Subject'] = '{}Concernant le montant du paiement de'.format(latest_month)    
    print('Envoi d'un e-mail{}...' .format(email))
    sendmail_Status = smtp_obj.sendmail(from_email, email, msg.as_string())
if sendmail_Status != {}:
    print('{}Un problème est survenu lors de l'envoi du courrier à: {}'.format(email,sendmail_Status))
smtp_obj.quit()

Comment utiliser

Il ne vous reste plus qu'à exécuter ce fichier .py. En définissant et en exécutant un calendrier, il est possible d'inciter automatiquement les personnes non rémunérées à collecter les frais de reconstruction pour la fête de boire tous les jours. Ayez une bonne vie de courrier.

Recommended Posts

Code pour envoyer du courrier basé sur la liste de diffusion Excel
Envoyez un email à l'adresse de Spushi avec python
Envoyer un e-mail avec Excel en pièce jointe en Python
Pour envoyer automatiquement des e-mails avec des pièces jointes à l'aide de l'API Gmail en Python
J'ai essayé de rendre possible l'envoi automatique d'un e-mail en double-cliquant simplement sur l'icône [Python]
Comment créer facilement un environnement où le code Python peut s'exécuter sur Jupyter sans polluer l'environnement local
Déguisez l'herbe sur GitHub et essayez de devenir ingénieur.
La route pour installer Python et Flask sur un PC hors ligne
[boto3] Envoyer un e-mail à l'aide de SES
Collez la figure matplotlib sur Excel
Remarque: envoyer un e-mail avec Django
[Python] Envoyez des e-mails avec Outlook
Exportez le rapport au format PDF à partir de DB avec Python et attachez-le automatiquement à un e-mail et envoyez-le
J'ai essayé de sortir la liste rpm de la destination de connexion SSH sur une feuille Excel avec Python + openpyxl.
J'ai essayé de rendre possible l'envoi automatique d'un e-mail en double-cliquant simplement sur l'icône [GAS / Python]
Que faire si vous ne parvenez pas à envoyer un e-mail à Yahoo avec Python.
Envoyer des e-mails à une adresse e-mail spécifique avec python sans paramétrer SMTP
mail html avec image à envoyer avec python
Le nombre est-il équivalent à un entier?
Python amateur tente de résumer la liste ①
Envoyer un e-mail avec Amazon SES + Python
Obtenir la liste de codes EDINET en Python
Je suis tombé sur un code de caractère lors de la conversion de CSV en JSON avec Python
Envoyez un e-mail d'amour direct à un nouvel utilisateur lorsqu'un nouvel utilisateur rejoint l'équipe Slack