From 54d02bd56e0cec898fbffee40a64e13def0abada Mon Sep 17 00:00:00 2001 From: ayxan Date: Mon, 30 Jan 2023 17:24:00 +0400 Subject: [PATCH] email connection fixed --- src/series/tasks.py | 53 +++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/src/series/tasks.py b/src/series/tasks.py index d7c5461..a8882b9 100644 --- a/src/series/tasks.py +++ b/src/series/tasks.py @@ -1,21 +1,21 @@ from celery import shared_task from account.models import User from django.template.loader import render_to_string -from django.core.mail import EmailMessage from imdb_api_access import SeriesCounter from imdb_api_access import MaximumUsageError +from django.core.mail import (EmailMessage, + get_connection) # from celery.utils.log import get_task_logger # logger = get_task_logger(__name__) - def update_series(updated_series): updated_series.series.last_season = updated_series.last_season updated_series.series.last_episode = updated_series.last_episode updated_series.series.new_episodes_count = updated_series.new_episodes_count -def send_email(user): +def compose_email(user): series = user.series.filter(show=True).order_by('-id') series_counter = SeriesCounter(user.imdb_api_key) @@ -27,15 +27,14 @@ def send_email(user): for updated_series in series_counter.new_series_list: update_series(updated_series) updated_series.save() - message = render_to_string('email/maximum_usage_notification.html', { - 'user': user, - 'new_series_list': series_counter.new_series_list, - 'maximum_usage': str(e) - }) - email = EmailMessage( - 'New Episodes!', message, to=[user.email] + return render_to_string( + 'email/maximum_usage_notification.html', + { + 'user': user, + 'new_series_list': series_counter.new_series_list, + 'maximum_usage': str(e), + }, ) - email.send() return if series_len: @@ -44,28 +43,30 @@ def send_email(user): updated_series.series.save() if series_counter.error_series: - message = render_to_string('email/error_series_notification.html', { + return render_to_string('email/error_series_notification.html', { 'user': user, 'new_series_list': series_counter.new_series_list, - 'error_series_list': series_counter.error_series + 'error_series_list': series_counter.error_series, }) - email = EmailMessage( - 'New Episodes!', message, to=[user.email] - ) - email.send() - return - message = render_to_string('email/new_series_notification.html', { + return render_to_string('email/new_series_notification.html', { 'user': user, - 'new_series_list': series_counter.new_series_list + 'new_series_list': series_counter.new_series_list, }) - email = EmailMessage( - 'New Episodes!', message, to=[user.email] - ) - email.send() - return @shared_task(name='send_emails') def send_feedback_email_task(): users = User.objects.filter(send_email=True) - for user in users: send_email(user) \ No newline at end of file + + with get_connection() as connection: + for user in users: + if html_message := compose_email(user): + msg = EmailMessage( + subject='Series Updated!', + body=html_message, + from_email='series.notification@gmail.com', + to=[user.email], + connection=connection, + ) + msg.content_subtype = 'html' + msg.send() \ No newline at end of file