diff --git a/tournaments/views.py b/tournaments/views.py index eba7ca5..e9a9dd0 100644 --- a/tournaments/views.py +++ b/tournaments/views.py @@ -13,6 +13,7 @@ from tournaments.models.device_token import DeviceToken from .models import Court, DateInterval, Club, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamScore, TeamRegistration, PlayerRegistration, Purchase, FailedApiCall from .models import TeamSummon from datetime import datetime, timedelta +import time from django.template import loader from datetime import date @@ -438,32 +439,52 @@ def send_email_to_jap_list(): # Open the CSV file with open('tournaments/static/misc/jap-test.csv', 'r') as file: - # Create a CSV reader object csv_reader = csv.reader(file) - # Optionally, skip the header row if your CSV has one - # next(csv_reader) + def log_error(message): + with open('email_errors.log', 'a') as log_file: + timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S') + log_file.write(f"{timestamp}: {message}\n") - # Iterate over each row in the CSV + batch = [] for row in csv_reader: - # Check if the row has at least 4 elements if len(row) >= 4: - # Get the second and fourth values name = row[2] mail = row[3] - - send_email(mail, name) - - # Print or process these values - print(f"Name: {name}, mail: {mail}") + batch.append((mail, name)) + + if len(batch) == 10: + for email, recipient_name in batch: + try: + send_email(email, recipient_name) + print(f"Name: {recipient_name}, mail: {email}") + except Exception as e: + error_message = f"Error sending email to {email}: {str(e)}" + log_error(error_message) + print(error_message) + + batch = [] + time.sleep(2) else: print(f"Row doesn't have enough elements: {row}") + # Send any remaining emails in the last batch + for email, recipient_name in batch: + try: + send_email(email, recipient_name) + print(f"Name: {recipient_name}, mail: {email}") + except Exception as e: + error_message = f"Error sending email to {email}: {str(e)}" + log_error(error_message) + print(error_message) + def send_email(mail, name): + if name.lower() not in name: + name = "" - subject = "Test mailing list!" - body = f"Salut {name},\n\nDésolé pour ce mail un peu intrusif. Je suis JAP en région PACA depuis maitenant plus d’un an. Lorsque j'ai démarré le métier je me suis retrouvé un peu sous l’eau, entre les messages d’inscriptions, la convocation des équipes, les imprévus qui cassent la structure du tournoi et bien d’autres…\nJ’ai rêvé d’avoir un outil qui me facilité la vie, et étant développeur de formation et j’ai entrepris la création d’une app pour gagner du temps. Mon app Padel Club est devenue une réalité récemment et j’aimerai évidemment le partager à tous, et aussi améliorer l’expérience joueur grâce à une information mieux partagée. \n\nJe ne te dérange pas plus longtemps, voici le lien de présentation de l’app iOS:\nhttps://padelclub.app/download/\n\nJe serai ravi d’avoir ton retour, si tu penses l’essayer, si tu penses qu’il manque quelque chose ou si quelque chose ne te convient pas. \nN’hésite pas à m’écrire ou m’appeler directement au 06 81 59 81 93." + subject = "Tes tournois en toute simplicité avec Padel Club" + body = f"Salut !\n\nJe me permets de t'écrire car je suis JAP2 en région PACA et développeur, et je viens de lancer Padel Club, une app iOS qui facilite enfin l'organisation des tournois. Avec elle, tu peux convoquer rapidement, simuler et programmer tes structures, diffuser tous les résultats à tous les joueurs, et ce depuis un iPhone.\n\nTu peux l'essayer gratuitement pour découvrir tout son potentiel ! Télécharge l'app ici et teste la dès ton prochain tournoi: https://padelclub.app/download/\n\nJe suis disponible pour échanger avec toi par mail ou téléphone au 06 81 59 81 93 et voir ce que tu en penses.\nÀ bientôt j'espère !\n\nRazmig" email = EmailMessage(subject, body, to=[mail]) email.send()