Sindbad~EG File Manager
<?php
/**
* Email Queue Processor
* This script processes pending emails in the queue
* Run this script via cron job every few minutes to send queued emails
*/
// Prevent direct web access
if (php_sapi_name() !== 'cli' && !isset($_GET['manual'])) {
die('This script should be run from command line or with ?manual=1 parameter');
}
require_once __DIR__ . '/../config/config.php';
require_once __DIR__ . '/../classes/EmailService.php';
// Set time limit for long-running process
set_time_limit(300); // 5 minutes
// Log start
$logFile = __DIR__ . '/../logs/email_processor.log';
$logDir = dirname($logFile);
if (!is_dir($logDir)) {
mkdir($logDir, 0755, true);
}
function logMessage($message) {
global $logFile;
$timestamp = date('Y-m-d H:i:s');
file_put_contents($logFile, "[$timestamp] $message\n", FILE_APPEND | LOCK_EX);
// Also output to console if running via CLI
if (php_sapi_name() === 'cli') {
echo "[$timestamp] $message\n";
}
}
try {
logMessage("Email processor started");
$emailService = new EmailService();
if (!$emailService->isEnabled()) {
logMessage("Email system is disabled. Exiting.");
exit(0);
}
// Process up to 50 emails per run
$processed = $emailService->processPendingEmails(50);
logMessage("Processed $processed emails");
// Get current stats
$stats = $emailService->getEmailStats();
logMessage("Queue stats - Total: {$stats['total']}, Pending: {$stats['pending']}, Sent: {$stats['sent']}, Failed: {$stats['failed']}");
logMessage("Email processor completed successfully");
} catch (Exception $e) {
logMessage("Error in email processor: " . $e->getMessage());
logMessage("Stack trace: " . $e->getTraceAsString());
exit(1);
}
// If running manually via web, show results
if (isset($_GET['manual'])) {
echo "<h2>Email Processor Results</h2>";
echo "<p>Processed: $processed emails</p>";
echo "<p>Check logs at: " . htmlspecialchars($logFile) . "</p>";
echo "<p><a href='../modules/email/index.php'>← Back to Email Management</a></p>";
}
?>
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists