#!/usr/bin/env python3
import os
import sys
import django
import ssl
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import formatdate, make_msgid

# Disable SSL certificate verification (use with caution)
ssl._create_default_https_context = ssl._create_unverified_context

# Set up Django environment
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'bloggers_ems.settings')
django.setup()

from django.core.mail import send_mail
from django.conf import settings

def send_test_email_direct(recipient_email):
    """Send a test email using direct SMTP with proper headers"""
    print(f"Sending test email to {recipient_email} using direct SMTP...")
    print(f"Using EMAIL_HOST: {settings.EMAIL_HOST}")
    print(f"Using EMAIL_PORT: {settings.EMAIL_PORT}")
    print(f"Using EMAIL_HOST_USER: {settings.EMAIL_HOST_USER}")
    
    try:
        # Create message container
        msg = MIMEMultipart('alternative')
        msg['Subject'] = 'Test Email from Bloggers EMS (Fixed Headers)'
        msg['From'] = settings.EMAIL_HOST_USER
        msg['To'] = recipient_email
        
        # Add required headers for Gmail compliance
        msg['Message-ID'] = make_msgid(domain=settings.EMAIL_HOST.split(':', 1)[0])
        msg['Date'] = formatdate(localtime=True)
        
        # Create the body of the message
        text = """Hello,

This is a test email from the Bloggers EMS system with proper headers.

If you received this email, it means the email configuration is working correctly.

Regards,
Bloggers EMS Team"""
        
        html = """<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; line-height: 1.6; }
        .container { max-width: 600px; margin: 0 auto; padding: 20px; }
        .header { background-color: #6f42c1; color: white; padding: 10px 20px; }
        .content { padding: 20px; border: 1px solid #ddd; }
        .footer { font-size: 12px; color: #777; margin-top: 20px; }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <h2>Bloggers EMS</h2>
        </div>
        <div class="content">
            <p>Hello,</p>
            <p>This is a test email from the Bloggers EMS system with proper headers.</p>
            <p>If you received this email, it means the email configuration is working correctly.</p>
            <p>Regards,<br>Bloggers EMS Team</p>
        </div>
        <div class="footer">
            <p>This email was sent from the Bloggers EMS system.</p>
            <p>&copy; 2025 Bloggers of Zambia. All rights reserved.</p>
        </div>
    </div>
</body>
</html>"""
        
        # Attach parts
        part1 = MIMEText(text, 'plain')
        part2 = MIMEText(html, 'html')
        msg.attach(part1)
        msg.attach(part2)
        
        # Connect to server
        if settings.EMAIL_USE_SSL:
            server = smtplib.SMTP_SSL(settings.EMAIL_HOST, settings.EMAIL_PORT)
        else:
            server = smtplib.SMTP(settings.EMAIL_HOST, settings.EMAIL_PORT)
            if settings.EMAIL_USE_TLS:
                server.starttls()
        
        # Show communication with the server
        server.set_debuglevel(1)
        
        # Login
        server.login(settings.EMAIL_HOST_USER, settings.EMAIL_HOST_PASSWORD)
        
        # Send email
        server.sendmail(settings.EMAIL_HOST_USER, [recipient_email], msg.as_string())
        
        # Disconnect
        server.quit()
        
        print("\nEmail sent successfully using direct SMTP!")
        return True
    except Exception as e:
        print(f"\nError sending email using direct SMTP: {e}")
        return False

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Usage: python test_email_fixed.py recipient@example.com")
        sys.exit(1)
    
    recipient_email = sys.argv[1]
    send_test_email_direct(recipient_email)
