from django.conf import settings
from django.core.mail import EmailMultiAlternatives
from django.template.loader import get_template
from django.template import Context
from django.contrib.sites.models import Site

def send_group_email(request, to_email, subject, email_text_template, email_html_template):
    """Sends a email to a group of people using a standard layout"""

    # Mail the admins to inform them of a new request
    ctx = Context({'request': request, 'domain': Site.objects.get_current().domain})
    msg = EmailMultiAlternatives(subject, get_template(email_text_template).render(ctx), getattr(settings, 'DEFAULT_FROM_EMAIL', 'auth@pleaseignore.com'), to_email)
    msg.attach_alternative(get_template(email_html_template).render(ctx), 'text/html')
    msg.send(fail_silently=True)


from django.conf import settings
from django.core.mail import EmailMultiAlternatives, get_connection
from django.template.loader import get_template
from django.template import Context
from django.contrib.sites.models import Site

def send_group_email(request, to_email, subject, email_text_template, email_html_template):
    """Sends a email to a group of people using a standard layout"""

    # Mail the admins to inform them of a new request
    ctx = Context({'request': request, 'domain': Site.objects.get_current().domain})

    messages = [generate_mail(ctx, email_text_template, email_html_template, to, subject) for to in to_email]
    connection = get_connection(fail_silently=True)
    connection.send_messages(messages)

def generate_mail(context, email_text_template, email_html_template, to, subject):
    msg = EmailMultiAlternatives(subject, get_template(email_text_template).render(context), getattr(settings, 'DEFAULT_FROM_EMAIL', 'auth@pleaseignore.com'), [to])
    msg.attach_alternative(get_template(email_html_template).render(context), 'text/html')
    return msg


Send individual mails, to avoid showing the whole to list, BCC and spamholing from Google
Send individual mails, to avoid showing the whole to list, BCC and spamholing from Google

  from django.conf import settings
- from django.core.mail import EmailMultiAlternatives
+ from django.core.mail import EmailMultiAlternatives, get_connection
  from django.template.loader import get_template
  from django.template import Context
  from django.contrib.sites.models import Site
  
  def send_group_email(request, to_email, subject, email_text_template, email_html_template):
      """Sends a email to a group of people using a standard layout"""
  
      # Mail the admins to inform them of a new request
      ctx = Context({'request': request, 'domain': Site.objects.get_current().domain})
+ 
+     messages = [generate_mail(ctx, email_text_template, email_html_template, to, subject) for to in to_email]
+     connection = get_connection(fail_silently=True)
+     connection.send_messages(messages)
+ 
+ def generate_mail(context, email_text_template, email_html_template, to, subject):
-     msg = EmailMultiAlternatives(subject, get_template(email_text_template).render(ctx), getattr(settings, 'DEFAULT_FROM_EMAIL', 'auth@pleaseignore.com'), to_email)
+     msg = EmailMultiAlternatives(subject, get_template(email_text_template).render(context), getattr(settings, 'DEFAULT_FROM_EMAIL', 'auth@pleaseignore.com'), [to])
-     msg.attach_alternative(get_template(email_html_template).render(ctx), 'text/html')
+     msg.attach_alternative(get_template(email_html_template).render(context), 'text/html')
-     msg.send(fail_silently=True)
+     return msg
  
  
Send individual mails, to avoid showing the whole to list, BCC and spamholing from Google
## Code Before:
from django.conf import settings
from django.core.mail import EmailMultiAlternatives
from django.template.loader import get_template
from django.template import Context
from django.contrib.sites.models import Site

def send_group_email(request, to_email, subject, email_text_template, email_html_template):
    """Sends a email to a group of people using a standard layout"""

    # Mail the admins to inform them of a new request
    ctx = Context({'request': request, 'domain': Site.objects.get_current().domain})
    msg = EmailMultiAlternatives(subject, get_template(email_text_template).render(ctx), getattr(settings, 'DEFAULT_FROM_EMAIL', 'auth@pleaseignore.com'), to_email)
    msg.attach_alternative(get_template(email_html_template).render(ctx), 'text/html')
    msg.send(fail_silently=True)


## Instruction:
Send individual mails, to avoid showing the whole to list, BCC and spamholing from Google
## Code After:
from django.conf import settings
from django.core.mail import EmailMultiAlternatives, get_connection
from django.template.loader import get_template
from django.template import Context
from django.contrib.sites.models import Site

def send_group_email(request, to_email, subject, email_text_template, email_html_template):
    """Sends a email to a group of people using a standard layout"""

    # Mail the admins to inform them of a new request
    ctx = Context({'request': request, 'domain': Site.objects.get_current().domain})

    messages = [generate_mail(ctx, email_text_template, email_html_template, to, subject) for to in to_email]
    connection = get_connection(fail_silently=True)
    connection.send_messages(messages)

def generate_mail(context, email_text_template, email_html_template, to, subject):
    msg = EmailMultiAlternatives(subject, get_template(email_text_template).render(context), getattr(settings, 'DEFAULT_FROM_EMAIL', 'auth@pleaseignore.com'), [to])
    msg.attach_alternative(get_template(email_html_template).render(context), 'text/html')
    return msg

