import logging from django.core.mail import send_mail, EmailMultiAlternatives from django.conf import settings from django.utils.html import strip_tags logger = logging.getLogger(__name__) def send_campaign_email(campaign, recipients): """ Sends a campaign email to a list of recipients. """ subject = campaign.subject html_content = campaign.body text_content = strip_tags(html_content) from_email = settings.DEFAULT_FROM_EMAIL success_count = 0 fail_count = 0 for recipient in recipients: try: msg = EmailMultiAlternatives(subject, text_content, from_email, [recipient.email]) msg.attach_alternative(html_content, "text/html") msg.send() success_count += 1 except Exception as e: logger.error(f"Failed to send email to {recipient.email}: {e}") fail_count += 1 return success_count, fail_count def send_contact_message(name, email, message): """ Simple wrapper for contact form emails. """ subject = f"New Contact Message from {name}" body = f"From: {name} <{email}>\n\nMessage:\n{message}" try: send_mail( subject, body, settings.DEFAULT_FROM_EMAIL, settings.CONTACT_EMAIL_TO, fail_silently=False, ) return True except Exception as e: logger.error(f"Failed to send contact message: {e}") return False