diff --git a/includes/Core/Notifications/EmailManager.php b/includes/Core/Notifications/EmailManager.php index fa21fc2..9a6b797 100644 --- a/includes/Core/Notifications/EmailManager.php +++ b/includes/Core/Notifications/EmailManager.php @@ -115,19 +115,33 @@ class EmailManager { * @param WC_Order $order */ public function send_order_processing_email($order_id, $order = null) { + if (defined('WP_DEBUG') && WP_DEBUG) { + error_log('[EmailManager] send_order_processing_email triggered for order #' . $order_id); + } + if (!$order) { $order = wc_get_order($order_id); } if (!$order) { + if (defined('WP_DEBUG') && WP_DEBUG) { + error_log('[EmailManager] Order not found for ID: ' . $order_id); + } return; } // Check if event is enabled if (!$this->is_event_enabled('order_processing', 'email', 'customer')) { + if (defined('WP_DEBUG') && WP_DEBUG) { + error_log('[EmailManager] order_processing email is disabled in settings'); + } return; } + if (defined('WP_DEBUG') && WP_DEBUG) { + error_log('[EmailManager] Sending order_processing email for order #' . $order_id); + } + // Send email $this->send_email('order_processing', 'customer', $order); } @@ -364,6 +378,10 @@ class EmailManager { * @param array $extra_data */ private function send_email($event_id, $recipient_type, $data, $extra_data = []) { + if (defined('WP_DEBUG') && WP_DEBUG) { + error_log('[EmailManager] send_email called - Event: ' . $event_id . ', Recipient: ' . $recipient_type); + } + // Get email renderer $renderer = EmailRenderer::instance(); @@ -371,16 +389,27 @@ class EmailManager { $email = $renderer->render($event_id, $recipient_type, $data, $extra_data); if (!$email) { + if (defined('WP_DEBUG') && WP_DEBUG) { + error_log('[EmailManager] Email rendering failed for event: ' . $event_id); + } return; } + if (defined('WP_DEBUG') && WP_DEBUG) { + error_log('[EmailManager] Email rendered successfully - To: ' . $email['to'] . ', Subject: ' . $email['subject']); + } + // Send email via wp_mail $headers = [ 'Content-Type: text/html; charset=UTF-8', 'From: ' . get_bloginfo('name') . ' <' . get_option('admin_email') . '>', ]; - wp_mail($email['to'], $email['subject'], $email['body'], $headers); + $sent = wp_mail($email['to'], $email['subject'], $email['body'], $headers); + + if (defined('WP_DEBUG') && WP_DEBUG) { + error_log('[EmailManager] wp_mail called - Result: ' . ($sent ? 'success' : 'failed')); + } // Log email sent do_action('woonoow_email_sent', $event_id, $recipient_type, $email); diff --git a/test-email-flow.php b/test-email-flow.php new file mode 100644 index 0000000..3bb0e99 --- /dev/null +++ b/test-email-flow.php @@ -0,0 +1,255 @@ + + + +
+";
+ foreach ($events as $event_id => $event_data) {
+ $email_enabled = $event_data['channels']['email']['enabled'] ?? false;
+ $status_icon = $email_enabled ? '✓' : '✗';
+ echo "$status_icon $event_id: email " . ($email_enabled ? 'enabled' : 'disabled') . "\n";
+ }
+ echo "";
+ }
+ ?>
+
+ ";
+ foreach ($queued_emails as $email) {
+ $payload = maybe_unserialize($email->option_value);
+ echo "ID: {$email->option_name}\n";
+ echo "To: " . ($payload['to'] ?? 'unknown') . "\n";
+ echo "Subject: " . ($payload['subject'] ?? 'unknown') . "\n";
+ echo "---\n";
+ }
+ echo "";
+ }
+ ?>
+
+ Recent failures:\n";
+ foreach ($failed_actions as $action) {
+ echo "ID: {$action->action_id}\n";
+ echo "Args: {$action->args}\n";
+ echo "Scheduled: {$action->scheduled_date_gmt}\n";
+ echo "---\n";
+ }
+ echo "";
+ }
+ } else {
+ echo "";
+ echo implode('', array_slice($email_logs, -10)); // Last 10 entries
+ echo "";
+ }
+ } else {
+ echo "This is a test email from WooNooW email queue system.
Time: ' . date('Y-m-d H:i:s') . '
', + 'headers' => ['Content-Type: text/html; charset=UTF-8'], + 'attachments' => [], + ]; + + \WooNooW\Core\Mail\MailQueue::enqueue($test_payload); + + echo "✓ SUCCESS - Test email queued to: " . get_option('admin_email') . "
"; + echo "Check your inbox in a few moments. Also check Action Scheduler queue above.
"; + } + + if ($_GET['action'] === 'process_queue') { + echo "✓ SUCCESS - Action Scheduler queue processed
"; + } else { + echo "⚠ WARN - Action Scheduler not available
"; + } + } + + if ($_GET['action'] === 'test_order_email') { + echo "✗ FAIL - No orders found. Create a test order first.
"; + } else { + $order = $orders[0]; + echo "Using order #" . $order->get_id() . "
"; + + // Trigger order processing email + $email_manager = \WooNooW\Core\Notifications\EmailManager::instance(); + $email_manager->send_order_processing_email($order->get_id(), $order); + + echo "✓ SUCCESS - Order processing email triggered
"; + echo "Check Action Scheduler queue and email logs above.
"; + } + } + + echo ""; + } + ?> + +