#!/usr/bin/env python3 """ Single test file for mail service - does everything in one place """ from datetime import datetime, date from zoneinfo import ZoneInfo print("=" * 60) print("šŸ“§ MAIL SERVICE TEST") print("=" * 60) try: from app_core.services.mailer_service import MailerService from app_core.config.settings import AppSettings # Initialize services settings = AppSettings() service = MailerService(settings) # Get most recent date with data chosen_date = service.select_report_date() if not chosen_date: print("āŒ No data available") exit(1) print(f"āœ… Using date: {chosen_date}") # Fetch data df = service.fetch_daily_rows(chosen_date) print(f"āœ… Found {len(df)} records") # Build email row = df.iloc[0].to_dict() html = service.build_email_html(row, df) print(f"āœ… Email HTML generated ({len(html)} characters)") # Show what would be logged ist = ZoneInfo("Asia/Kolkata") now_ist = datetime.now(ist) print(f"\nšŸ“ Data that would be inserted in email_logs:") print(f" sent_at: {now_ist}") print(f" recipients: loyalydigital@gmail.com") print(f" subject: Daily Digest - {chosen_date}") print(f" status: sent") print(f" date_for: {chosen_date}") print(f" error: null") # Ask user print(f"\nšŸš€ Send email to loyalydigital@gmail.com? (y/n):") send_confirm = input(" Send? ").strip().lower() if send_confirm == 'y': print(f"\nšŸ“¤ Sending email...") recipients = ["loyalydigital@gmail.com"] subject = f"Daily Digest - {chosen_date}" ok, msg = service.send_email(recipients, subject, html) if ok: print(f"āœ… Email sent successfully!") service.log_email(recipients, subject, str(chosen_date), "sent", None) print(f"āœ… Logged in database") else: print(f"āŒ Email failed: {msg}") service.log_email(recipients, subject, str(chosen_date), "failed", msg) print(f"āœ… Failed attempt logged") else: print(f"\nā­ļø Email not sent (test mode)") # Show recent logs print(f"\nšŸ“‹ Recent email logs:") logs = service.recent_logs(limit=5) for log in logs: print(f" {log['status']} - {log['subject']} at {log['sent_at']}") except Exception as e: print(f"āŒ Error: {e}") import traceback traceback.print_exc() print(f"\n" + "=" * 60) print("šŸ Done!") print("=" * 60)