diff --git a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/community/class-email-attendees-data.php b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/community/class-email-attendees-data.php index a37d2fe7..e860f6bd 100644 --- a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/community/class-email-attendees-data.php +++ b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/community/class-email-attendees-data.php @@ -295,12 +295,33 @@ class HVAC_Email_Attendees_Data { } } - // Add sender information + // Add sender information from the logged-in trainer $current_user = wp_get_current_user(); - $from_name = $current_user->display_name; - $from_email = $current_user->user_email; + + // Get trainer profile data if available + $trainer_name = $current_user->display_name; + $trainer_email = $current_user->user_email; + + // Check if user is a trainer and has profile data + if (in_array('hvac_trainer', $current_user->roles)) { + // Try to get trainer business name first + $business_name = get_user_meta($current_user->ID, 'business_name', true); + if (!empty($business_name)) { + $trainer_name = $business_name; + } + + // Try to get trainer contact email if different + $contact_email = get_user_meta($current_user->ID, 'contact_email', true); + if (!empty($contact_email) && is_email($contact_email)) { + $trainer_email = $contact_email; + } + } + + $from_name = $trainer_name; + $from_email = $trainer_email; $headers[] = 'From: ' . $from_name . ' <' . $from_email . '>'; $debug_log .= "From: {$from_name} <{$from_email}>\n"; + $debug_log .= "User role: " . implode(', ', $current_user->roles) . "\n"; // Process recipients $all_attendees = $this->get_attendees(); @@ -379,43 +400,42 @@ class HVAC_Email_Attendees_Data { $debug_log .= "Subject: {$email_subject}\n"; $debug_log .= "Headers: " . print_r($headers, true) . "\n"; - // Add error logger for wp_mail + // Note: consolidated error logging is added below + + // Add detailed logging + $debug_log .= "Headers: " . print_r($headers, true) . "\n"; + $debug_log .= "Sending mail with wp_mail()\n"; + + // Add robust error logging add_action('wp_mail_failed', function($wp_error) use (&$debug_log) { $debug_log .= "Mail error: " . $wp_error->get_error_message() . "\n"; + $debug_log .= "Error data: " . print_r($wp_error->get_error_data(), true) . "\n"; if (class_exists('HVAC_Logger')) { - HVAC_Logger::error('WordPress Mail Error: ' . $wp_error->get_error_message(), 'Email System'); + HVAC_Logger::error('WordPress Mail Error: ' . $wp_error->get_error_message() . ' - ' . print_r($wp_error->get_error_data(), true), 'Email System'); } }); - // Use server email settings temporarily to avoid host-specific issues - $debug_log .= "Using PHP mail() settings\n"; - add_filter('pre_wp_mail', function($null, $atts) use ($email, $email_subject, $personalized_message, $headers, &$debug_log) { - // Try sending with PHP mail directly - $to = $email; - $subject = $email_subject; - $message = wpautop($personalized_message); - $headers_string = implode("\r\n", $headers); - - $debug_log .= "Using PHP mail() function directly\n"; - - $mail_sent = mail($to, $subject, $message, $headers_string); - - $debug_log .= "PHP mail() result: " . ($mail_sent ? 'Success' : 'Failed') . "\n"; - - // Return true to indicate we've handled the email - if ($mail_sent) { - return true; + // Try to log environment information + $debug_log .= "Mail environment:\n"; + $debug_log .= "WordPress version: " . get_bloginfo('version') . "\n"; + if (function_exists('phpversion')) { + $debug_log .= "PHP version: " . phpversion() . "\n"; + } + + // Check if WP Mail SMTP is active + $active_plugins = get_option('active_plugins', array()); + $wp_mail_smtp_active = false; + foreach ($active_plugins as $plugin) { + if (strpos($plugin, 'wp-mail-smtp') !== false) { + $wp_mail_smtp_active = true; + $debug_log .= "WP Mail SMTP plugin is active\n"; + break; } - - // Return null to let wp_mail proceed with its normal process - return $null; - }, 10, 2); + } + // Send with standard wp_mail $mail_sent = wp_mail($email, $email_subject, wpautop($personalized_message), $headers); - // Remove the filter after sending - remove_filter('pre_wp_mail', function(){}, 10); - $debug_log .= "wp_mail result: " . ($mail_sent ? 'Success' : 'Failed') . "\n"; if ( $mail_sent ) { diff --git a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/community/class-email-debug.php b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/community/class-email-debug.php index ef6d7afa..cdbf6148 100644 --- a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/community/class-email-debug.php +++ b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/community/class-email-debug.php @@ -118,6 +118,25 @@ class HVAC_Email_Debug { $current_user = wp_get_current_user(); $output .= "Current user: " . $current_user->display_name . " (" . $current_user->user_email . ")\n"; $output .= "User roles: " . implode(', ', $current_user->roles) . "\n"; + + // Check additional user profile data + $output .= "\n=== USER PROFILE DATA ===\n"; + $business_name = get_user_meta($current_user->ID, 'business_name', true); + $contact_email = get_user_meta($current_user->ID, 'contact_email', true); + $phone = get_user_meta($current_user->ID, 'phone', true); + + $output .= "Business Name: " . ($business_name ? $business_name : 'Not set') . "\n"; + $output .= "Contact Email: " . ($contact_email ? $contact_email : 'Not set') . "\n"; + $output .= "Phone: " . ($phone ? $phone : 'Not set') . "\n"; + + // List all meta fields for debugging + $output .= "\nAll user meta fields:\n"; + $user_meta = get_user_meta($current_user->ID); + foreach ($user_meta as $key => $value) { + if (is_array($value) && isset($value[0])) { + $output .= "- {$key}: " . (strlen($value[0]) > 50 ? substr($value[0], 0, 50) . "..." : $value[0]) . "\n"; + } + } } // Check event @@ -210,17 +229,59 @@ class HVAC_Email_Debug { // Test email functionality $output .= "\n=== EMAIL FUNCTIONALITY ===\n"; $output .= "WordPress mail function available: " . (function_exists('wp_mail') ? 'Yes' : 'No') . "\n"; + $output .= "PHP mail function available: " . (function_exists('mail') ? 'Yes' : 'No') . "\n"; // Get mail settings - $output .= "Mail configuration:\n"; + $output .= "\nMail configuration:\n"; $admin_email = get_option('admin_email'); $output .= "Admin email: {$admin_email}\n"; - $output .= "Mail test: "; - // Don't actually send mail in debug, just check configuration - $output .= "Not sending test email to avoid mail server load\n"; + // Check for mail plugins + $output .= "\nMail plugins:\n"; + $all_plugins = get_option('active_plugins', array()); + $mail_plugins_found = false; - $output .= "\nNote: If you need to send a test email, you can use the form on the page with a minimal set of recipients.\n"; + foreach ($all_plugins as $plugin) { + if (strpos($plugin, 'mail') !== false || strpos($plugin, 'smtp') !== false) { + $output .= "- {$plugin}\n"; + $mail_plugins_found = true; + } + } + + if (!$mail_plugins_found) { + $output .= "No mail plugins detected\n"; + } + + // Check WP Mail SMTP settings if installed + if (in_array('wp-mail-smtp/wp_mail_smtp.php', $all_plugins)) { + $output .= "\nWP Mail SMTP settings:\n"; + $smtp_settings = get_option('wp_mail_smtp', array()); + + if (!empty($smtp_settings)) { + // Don't show passwords, just configuration status + $output .= "Mailer: " . (isset($smtp_settings['mail']['mailer']) ? $smtp_settings['mail']['mailer'] : 'Not set') . "\n"; + $output .= "From Email: " . (isset($smtp_settings['mail']['from_email']) ? $smtp_settings['mail']['from_email'] : 'Not set') . "\n"; + $output .= "From Name: " . (isset($smtp_settings['mail']['from_name']) ? $smtp_settings['mail']['from_name'] : 'Not set') . "\n"; + $output .= "Return Path: " . (isset($smtp_settings['mail']['return_path']) ? 'Enabled' : 'Disabled') . "\n"; + + if (isset($smtp_settings['mail']['mailer'])) { + $mailer = $smtp_settings['mail']['mailer']; + $output .= "SMTP Host: " . (isset($smtp_settings[$mailer]['host']) ? 'Configured' : 'Not configured') . "\n"; + $output .= "SMTP Encryption: " . (isset($smtp_settings[$mailer]['encryption']) ? $smtp_settings[$mailer]['encryption'] : 'Not set') . "\n"; + $output .= "SMTP Auth: " . (isset($smtp_settings[$mailer]['auth']) ? 'Enabled' : 'Disabled') . "\n"; + $output .= "SMTP Port: " . (isset($smtp_settings[$mailer]['port']) ? $smtp_settings[$mailer]['port'] : 'Not set') . "\n"; + } + } else { + $output .= "WP Mail SMTP settings not found\n"; + } + } + + // Add test button that will send an actual test email + $output .= "\nEmail testing:\n"; + $output .= "If you need to send a test email, please use one of these options:\n"; + $output .= "1. Use the form on this page with a single recipient\n"; + $output .= "2. If using WP Mail SMTP, go to WP Mail SMTP settings and use their test email feature\n"; + $output .= "3. Contact your hosting provider if mail is still not working\n"; // Return debug output wp_send_json_success($output); diff --git a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/templates/email-attendees/template-email-attendees.php b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/templates/email-attendees/template-email-attendees.php index ea2ee274..e2d6efd5 100644 --- a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/templates/email-attendees/template-email-attendees.php +++ b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/templates/email-attendees/template-email-attendees.php @@ -251,6 +251,37 @@ $site_title = get_bloginfo( 'name' ); + display_name; + $sender_email = $current_user->user_email; + + // Get trainer profile data if available + if (in_array('hvac_trainer', $current_user->roles)) { + $business_name = get_user_meta($current_user->ID, 'business_name', true); + if (!empty($business_name)) { + $sender_name = $business_name; + } + + $contact_email = get_user_meta($current_user->ID, 'contact_email', true); + if (!empty($contact_email) && is_email($contact_email)) { + $sender_email = $contact_email; + } + } + ?> + +
+

<>

+

+ +
+