""" Email utilities for sending submission notifications. """ from django.core.mail import send_mail, EmailMultiAlternatives from django.template.loader import render_to_string from django.conf import settings def send_submission_emails(submission): """ Send emails for a quote submission. Sends: 1. Notification to owner (OWNER_EMAIL) 2. Confirmation to submitter (submission.email) Returns tuple (owner_sent, submitter_sent) """ files = submission.files.all() owner_email = getattr(settings, "OWNER_EMAIL", "") owner_sent = False submitter_sent = False # Email 1: Notification to owner if owner_email: try: subject = f"New Quote Request - Submission #{submission.id}" html_message = render_to_string( "emails/submission_notification_owner.html", { "submission": submission, "files": files, }, ) # Plain text fallback text_message = f""" New Quote Request Received! Submitted by: {submission.email} Submitted at: {submission.submitted_at.strftime('%B %d, %Y %I:%M %p')} Submission ID: #{submission.id} Description: {submission.description or '(No description provided)'} Files uploaded: {files.count()} """ for file in files: text_message += f"- {file.original_filename} ({file.file_size} bytes)\n" msg = EmailMultiAlternatives( subject=subject, body=text_message, from_email=settings.DEFAULT_FROM_EMAIL, to=[owner_email], ) msg.attach_alternative(html_message, "text/html") msg.send() owner_sent = True except Exception as e: print(f"Error sending owner email: {e}") # Email 2: Confirmation to submitter try: subject = "Quote Request Received - Sedutto Machineworks" html_message = render_to_string( "emails/submission_confirmation.html", { "submission": submission, "files": files, }, ) # Plain text fallback text_message = f""" Thank you for your quote request! We have received your submission and will review it shortly. Submission Details: Submission ID: #{submission.id} Submitted at: {submission.submitted_at.strftime('%B %d, %Y %I:%M %p')} Your Notes: {submission.description or '(No notes provided)'} Files uploaded: {files.count()} """ for file in files: text_message += f"- {file.original_filename} ({file.file_size} bytes)\n" text_message += f"\nWe will contact you at {submission.email} regarding your quote request.\n" text_message += f"\nThis submission will be kept on file until {submission.expiration_time.strftime('%B %d, %Y')}." msg = EmailMultiAlternatives( subject=subject, body=text_message, from_email=settings.DEFAULT_FROM_EMAIL, to=[submission.email], ) msg.attach_alternative(html_message, "text/html") msg.send() submitter_sent = True except Exception as e: print(f"Error sending submitter email: {e}") return (owner_sent, submitter_sent)