Changeset 3779168
- Timestamp:
- 11/02/2026 07:40:22 AM (5 hours ago)
- Location:
- emailidea-smtp-mailer/trunk
- Files:
-
- 2 added
- 7 edited
-
admin/logs-page.php (added)
-
admin/settings-page.php (modified) (6 diffs)
-
assets/js/deactivation.js (modified) (3 diffs)
-
emailidea-smtp-mailer.php (modified) (3 diffs)
-
includes/class-emailidea-deactivation.php (modified) (4 diffs)
-
includes/class-emailidea-logger.php (added)
-
includes/mailer.php (modified) (2 diffs)
-
readme.txt (modified) (5 diffs)
-
uninstall.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
emailidea-smtp-mailer/trunk/admin/settings-page.php
r3476364 r3779168 28 28 function emailidea_smtp_mailer_register_settings() { 29 29 register_setting( 'emailidea_smtp_mailer_group', 'emailidea_smtp_host', 'sanitize_text_field' ); 30 register_setting( 'emailidea_smtp_mailer_group', 'emailidea_smtp_port', 'absint' );31 30 register_setting( 'emailidea_smtp_mailer_group', 'emailidea_smtp_username', 'sanitize_text_field' ); 32 register_setting( 'emailidea_smtp_mailer_group', 'emailidea_smtp_password', 'sanitize_text_field' ); 33 register_setting( 'emailidea_smtp_mailer_group', 'emailidea_smtp_encryption', 'sanitize_text_field' ); 31 register_setting( 'emailidea_smtp_mailer_group', 'emailidea_smtp_password', 'emailidea_smtp_mailer_sanitize_password' ); 34 32 register_setting( 'emailidea_smtp_mailer_group', 'emailidea_from_email', 'sanitize_email' ); 35 33 register_setting( 'emailidea_smtp_mailer_group', 'emailidea_from_name', 'sanitize_text_field' ); … … 53 51 54 52 add_settings_field( 55 'emailidea_smtp_port',56 __( 'SMTP Port', 'emailidea-smtp-mailer' ),57 'emailidea_smtp_mailer_number_field_render',58 'emailidea-smtp-mailer',59 'emailidea_smtp_mailer_main_section',60 array( 'label_for' => 'emailidea_smtp_port' )61 );62 63 add_settings_field(64 53 'emailidea_smtp_username', 65 54 __( 'SMTP Username', 'emailidea-smtp-mailer' ), … … 77 66 'emailidea_smtp_mailer_main_section', 78 67 array( 'label_for' => 'emailidea_smtp_password' ) 79 );80 81 add_settings_field(82 'emailidea_smtp_encryption',83 __( 'Encryption', 'emailidea-smtp-mailer' ),84 'emailidea_smtp_mailer_encryption_field_render',85 'emailidea-smtp-mailer',86 'emailidea_smtp_mailer_main_section',87 array( 'label_for' => 'emailidea_smtp_encryption' )88 68 ); 89 69 … … 124 104 125 105 /** 106 * Sanitize the SMTP password. 107 * 108 * sanitize_text_field() must not be used here: it strips %xx sequences and tags, 109 * encodes "<" and trims or collapses whitespace, which silently changes valid 110 * passwords. Only invalid UTF-8, NUL bytes and line breaks are removed; the 111 * password is used as a literal string and never printed unescaped. 112 * 113 * @param mixed $value Submitted password. 114 * @return string 115 */ 116 function emailidea_smtp_mailer_sanitize_password( $value ) { 117 if ( ! is_scalar( $value ) ) { 118 return ''; 119 } 120 121 $value = wp_check_invalid_utf8( (string) $value, true ); 122 123 return str_replace( array( "\0", "\r", "\n" ), '', $value ); 124 } 125 126 /** 126 127 * Field rendering functions. 127 128 */ … … 133 134 function emailidea_smtp_mailer_number_field_render( $args ) { 134 135 $value = get_option( $args['label_for'] ); 135 echo '<input type="number" id="' . esc_attr( $args['label_for'] ) . '" name="' . esc_attr( $args['label_for'] ) . '" value="' . esc_attr( $value ) . '" class="small-text">'; 136 $placeholder = isset( $args['placeholder'] ) ? $args['placeholder'] : ''; 137 echo '<input type="number" id="' . esc_attr( $args['label_for'] ) . '" name="' . esc_attr( $args['label_for'] ) . '" value="' . esc_attr( $value ) . '" class="small-text" placeholder="' . esc_attr( $placeholder ) . '">'; 136 138 } 137 139 138 140 function emailidea_smtp_mailer_password_field_render( $args ) { 139 $value = get_option( $args['label_for'] ); 140 echo '<input type="password" id="' . esc_attr( $args['label_for'] ) . '" name="' . esc_attr( $args['label_for'] ) . '" value="' . esc_attr( $value ) . '" class="regular-text">'; 141 $value = (string) get_option( $args['label_for'] ); 142 // esc_attr() leaves existing entities such as "&" untouched, so encode "&" first 143 // to make passwords containing entity-like text round-trip exactly. 144 echo '<input type="password" id="' . esc_attr( $args['label_for'] ) . '" name="' . esc_attr( $args['label_for'] ) . '" value="' . esc_attr( str_replace( '&', '&', $value ) ) . '" class="regular-text" autocomplete="new-password">'; 141 145 } 142 146 … … 197 201 <?php esc_html_e( 'Don’t have an account? Register at EmailIdea', 'emailidea-smtp-mailer' ); ?> 198 202 </a> 203 <a href="<?php echo esc_url( admin_url( 'options-general.php?page=emailidea-smtp-logs' ) ); ?>" class="button button-secondary"> 204 <?php esc_html_e( 'View Email Logs', 'emailidea-smtp-mailer' ); ?> 205 </a> 199 206 </div> 200 207 -
emailidea-smtp-mailer/trunk/assets/js/deactivation.js
r3520099 r3779168 188 188 }; 189 189 190 // DEBUG: Log the payload being sent191 console.log('=== EmailIdea SMTP: Deactivation Feedback Payload ===');192 console.log('Webhook URL:', DEACT.rest_url);193 console.log('AJAX URL:', DEACT.ajax_url);194 console.log('Payload:', JSON.stringify(data, null, 2));195 196 190 // Fire and forget via REST API 197 191 if (window.wp && window.wp.apiFetch) { … … 204 198 contact_info: contactInfo || '' 205 199 } 206 }).then(function(response) { 207 console.log('=== EmailIdea SMTP: REST API Response ==='); 208 console.log('Response:', JSON.stringify(response, null, 2)); 209 }).catch(function(error) { 210 console.log('=== EmailIdea SMTP: REST API Error ==='); 211 console.log('Error:', error); 200 }).catch(function() { 201 // Ignored: deactivation must proceed even if feedback cannot be sent. 212 202 }); 213 203 } … … 218 208 type: 'POST', 219 209 data: data, 220 timeout: 2000, 221 success: function(response) { 222 console.log('=== EmailIdea SMTP: AJAX Response ==='); 223 console.log('Response:', JSON.stringify(response, null, 2)); 224 }, 225 error: function(xhr, status, error) { 226 console.log('=== EmailIdea SMTP: AJAX Error ==='); 227 console.log('Status:', status, 'Error:', error); 228 } 210 timeout: 2000 229 211 }); 230 212 -
emailidea-smtp-mailer/trunk/emailidea-smtp-mailer.php
r3520099 r3779168 4 4 * Plugin URI: https://emailidea.biz/ 5 5 * Description: Allow WordPress websites to send all outgoing emails through EmailIdea’s SMTP service. 6 * Version: 1.0. 16 * Version: 1.0.2 7 7 * Author: EmailIdea 8 8 * Text Domain: emailidea-smtp-mailer … … 15 15 16 16 // Define constants. 17 define( 'EMAILIDEA_SMTP_MAILER_VERSION', '1.0. 1' );17 define( 'EMAILIDEA_SMTP_MAILER_VERSION', '1.0.2' ); 18 18 define( 'EMAILIDEA_SMTP_MAILER_PATH', plugin_dir_path( __FILE__ ) ); 19 19 define( 'EMAILIDEA_SMTP_MAILER_URL', plugin_dir_url( __FILE__ ) ); … … 22 22 23 23 /** 24 * Seed defaults when the plugin version changes. Existing values are never overwritten. 25 */ 26 function emailidea_smtp_mailer_maybe_upgrade() { 27 if ( get_option( 'emailidea_smtp_mailer_version' ) === EMAILIDEA_SMTP_MAILER_VERSION ) { 28 return; 29 } 30 31 add_option( 'emailidea_smtp_encryption', 'none' ); 32 delete_transient( 'emailidea_smtp_debug_webhook_log' ); // Leftover from the removed debug code. 33 update_option( 'emailidea_smtp_mailer_version', EMAILIDEA_SMTP_MAILER_VERSION ); 34 } 35 36 /** 24 37 * Initialize the plugin. 25 38 */ 26 39 function emailidea_smtp_mailer_init() { 40 emailidea_smtp_mailer_maybe_upgrade(); 41 27 42 // Include required files. 28 43 require_once EMAILIDEA_SMTP_MAILER_PATH . 'includes/mailer.php'; 44 require_once EMAILIDEA_SMTP_MAILER_PATH . 'includes/class-emailidea-logger.php'; 45 EmailIdea_SMTP_Logger::init(); 29 46 30 47 if ( is_admin() ) { 31 48 require_once EMAILIDEA_SMTP_MAILER_PATH . 'admin/settings-page.php'; 49 require_once EMAILIDEA_SMTP_MAILER_PATH . 'admin/logs-page.php'; 32 50 require_once EMAILIDEA_SMTP_MAILER_PATH . 'includes/class-emailidea-deactivation.php'; 33 51 new EmailIdea_SMTP_Deactivation(); -
emailidea-smtp-mailer/trunk/includes/class-emailidea-deactivation.php
r3520099 r3779168 32 32 add_action( 'add_option_emailidea_smtp_host', [ $this, 'handle_settings_add_tracking' ], 10, 2 ); 33 33 add_action( 'add_option_emailidea_enabled', [ $this, 'handle_settings_add_tracking' ], 10, 2 ); 34 35 // DEBUG: Show saved webhook log on the page after redirect36 add_action( 'admin_footer', [ $this, 'output_debug_transient_log' ] );37 34 } 38 35 … … 55 52 public function handle_settings_add_tracking( $option, $value ) { 56 53 $this->send_settings_save_to_api(); 57 }58 59 /**60 * DEBUG: Save webhook log to a transient so it survives the redirect.61 * Remove this method before going live.62 */63 public function print_debug_console_log( $label, $payload, $response ) {64 $log_data = [65 'label' => $label,66 'url' => self::WEBHOOK_API_URL,67 'payload' => $payload,68 'response' => is_wp_error( $response )69 ? [ 'error' => $response->get_error_message() ]70 : [71 'status' => wp_remote_retrieve_response_code( $response ),72 'body' => json_decode( wp_remote_retrieve_body( $response ), true ),73 ],74 ];75 // Store in transient — it will be picked up after redirect76 set_transient( 'emailidea_smtp_debug_webhook_log', $log_data, 60 );77 }78 79 /**80 * DEBUG: Output the stored webhook log to browser console after redirect.81 * Remove this method before going live.82 */83 public function output_debug_transient_log() {84 $log_data = get_transient( 'emailidea_smtp_debug_webhook_log' );85 if ( ! $log_data ) {86 return;87 }88 // Delete immediately so it only shows once89 delete_transient( 'emailidea_smtp_debug_webhook_log' );90 91 echo '<script>';92 echo 'console.log("=== EmailIdea SMTP: ' . esc_js( $log_data['label'] ) . ' ===");';93 echo 'console.log("Webhook URL:", ' . wp_json_encode( $log_data['url'] ) . ');';94 echo 'console.log("Payload:", ' . wp_json_encode( $log_data['payload'] ) . ');';95 echo 'console.log("Response:", ' . wp_json_encode( $log_data['response'] ) . ');';96 echo '</script>';97 54 } 98 55 … … 266 223 'body' => wp_json_encode( $payload ), 267 224 'timeout' => 10, 268 'blocking' => true, // DEBUG: temporarily true to capture response225 'blocking' => false, 269 226 'redirection' => 0, 270 227 ]; 271 228 272 $response = wp_remote_request( self::WEBHOOK_API_URL, $args ); 273 274 // DEBUG: Log payload and response to browser console 275 $this->print_debug_console_log( 'Settings Save Webhook', $payload, $response ); 229 wp_remote_request( self::WEBHOOK_API_URL, $args ); 276 230 277 231 return true; … … 320 274 'body' => wp_json_encode( $payload ), 321 275 'timeout' => 10, 322 'blocking' => true, // DEBUG: temporarily true to capture response276 'blocking' => false, 323 277 'redirection' => 0, 324 278 ]; 325 279 326 $response = wp_remote_request( self::WEBHOOK_API_URL, $args ); 327 328 // DEBUG: Log payload and response to browser console 329 $this->print_debug_console_log( 'Deactivation Feedback Webhook', $payload, $response ); 280 wp_remote_request( self::WEBHOOK_API_URL, $args ); 330 281 331 282 return true; -
emailidea-smtp-mailer/trunk/includes/mailer.php
r3476364 r3779168 16 16 function emailidea_smtp_mailer_configure_mailer( $phpmailer ) { 17 17 $host = get_option( 'emailidea_smtp_host' ); 18 $port = get_option( 'emailidea_smtp_port' );19 18 $username = get_option( 'emailidea_smtp_username' ); 20 19 $password = get_option( 'emailidea_smtp_password' ); 21 $encryption = get_option( 'emailidea_smtp_encryption', 'none' );22 20 $from_email = get_option( 'emailidea_from_email' ); 23 21 $from_name = get_option( 'emailidea_from_name' ); … … 29 27 } 30 28 29 // The EmailIdea SMTP service works on port 587 without encryption only, so neither is configurable. 31 30 $phpmailer->isSMTP(); 32 $phpmailer->Host = $host; 33 $phpmailer->Port = $port; 34 $phpmailer->SMTPAuth = true; 35 $phpmailer->Username = $username; 36 $phpmailer->Password = $password; 37 $phpmailer->SMTPSecure = ( 'none' === $encryption ) ? '' : $encryption; 31 $phpmailer->Host = $host; 32 $phpmailer->Port = 587; 33 $phpmailer->SMTPAuth = true; 34 $phpmailer->Username = $username; 35 $phpmailer->Password = $password; 36 $phpmailer->SMTPSecure = ''; 37 $phpmailer->SMTPAutoTLS = false; 38 38 39 39 if ( ! empty( $from_email ) ) { -
emailidea-smtp-mailer/trunk/readme.txt
r3557706 r3779168 1 1 === EmailIdea SMTP Mailer === 2 2 Contributors: konceptwise 3 Tags: smtp, wordpress mail smtp, email, emailidea, mailer3 Tags: smtp, email, wp mail, email log, email deliverability 4 4 Requires PHP: 7.4 5 Requires at least: 5. 06 Tested up to: 7. 07 Stable tag: 1.0. 15 Requires at least: 5.9 6 Tested up to: 7.1 7 Stable tag: 1.0.2 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html 10 10 11 EmailIdea SMTP Mailer ensures reliable WordPress email delivery via secure API-based SMTP and SaaS connectivity, solving common mail issues.11 Send WordPress emails through EmailIdea SMTP. Fix emails not sending or going to spam, with a built-in email log and test email. 12 12 13 13 == Description == 14 14 15 EmailIdea SMTP Mailer helps WordPress websites enhance and optimize their email delivery. Unlike generic SMTP plugins, EmailIdea provides:15 EmailIdea SMTP Mailer sends the emails your WordPress site creates — contact form messages, WooCommerce order emails, password resets and admin notifications — through the EmailIdea SMTP service instead of the default PHP `mail()` function. 16 16 17 * **API-based email delivery**: Faster and more reliable than traditional SMTP. 18 * **SaaS connectivity**: Seamless integration with the EmailIdea ecosystem. 19 * **Advanced reporting & logs**: Track every email sent from your site. 17 On many hosting environments, WordPress sends email with PHP `mail()`. It works in basic setups, but it often hurts deliverability: messages can be flagged, land in spam or never reach the inbox. Routing your emails through a dedicated SMTP service is the standard way to improve this. 20 18 21 On many hosting environments, emails are sent using the default PHP mail() function. While this method works in basic setups, it sometimes does not provide the best deliverability performance and can result in emails being flagged as not reaching the inbox. 19 **Why use EmailIdea SMTP Mailer** 22 20 23 With EmailIdea, you can send all your WordPress emails — including admin notifications, contact form submissions, and WooCommerce order emails — through a secure and reliable SMTP service. 21 * **Set up in minutes** – enter your EmailIdea SMTP details, tick Enable and send a test email. 22 * **Works with the emails your site already sends** – anything sent through WordPress's standard email function, including core, plugins and themes (contact forms, WooCommerce and more). 23 * **Test email built in** – confirm your settings work before relying on them. 24 * **Email log for troubleshooting** – see what was sent and exactly what the mail server replied. Search, filter and delete entries. Off by default. 25 * **Delivery reports in your EmailIdea account** – review your sending in the EmailIdea dashboard. 24 26 25 After registering at EmailIdea, you’ll receive: 26 - SMTP Host 27 - SMTP Port 28 - SMTP Username 29 - SMTP Password 27 **How it works** 30 28 31 Enter these details in the plugin settings, and your site will start sending emails securely and reliably. 29 After registering at EmailIdea, you receive: 30 31 * SMTP Host 32 * SMTP Username 33 * SMTP Password 34 35 Enter these in the plugin settings, tick **Enable EmailIdea SMTP Mailer**, and your site starts sending its emails through EmailIdea. 36 37 Don't have an account yet? [Register at EmailIdea](https://emailidea.biz/). 32 38 33 39 **Video Tutorial How to Use EmailIdea SMTP Mailer** … … 37 43 == Company & Ownership == 38 44 39 EmailIdea is a product of Konceptwise Digital Media Pvt Ltd. 40 The plugin is officially developed and maintained by the EmailIdea team. 45 EmailIdea is a product of Konceptwise Digital Media Pvt Ltd. 46 The plugin is officially developed and maintained by the EmailIdea team. 41 47 Official website: https://emailidea.biz/ 42 48 … … 47 53 * [EmailIdea Privacy Policy](https://emailidea.biz/privacy-policy/) 48 54 55 **1. EmailIdea SMTP server (smtp.emailidea.biz)** 56 When the plugin is enabled, every email your site sends (recipients, subject, content and attachments) is sent to the EmailIdea SMTP server, together with the SMTP username and password you entered, so that it can be delivered. 57 58 **2. EmailIdea plugin activity webhook (https://app.emailidea.biz/api/WordpressWebhook)** 59 The plugin notifies EmailIdea in these two cases. This information is used only to provide customer support in case of any error. 60 * Each time you save the plugin settings: your SMTP username (used to identify your EmailIdea account), the plugin name and version, the time, and the URL of the settings page. 61 * If you submit the feedback form when deactivating the plugin: the reason you select, any text or contact details you choose to type, the SMTP username, the plugin version, the time and the page URL. 62 No email content or SMTP password is sent to this webhook. 63 64 **3. Email log (stored on your own site only)** 65 The optional email log (Settings → EmailIdea SMTP Logs) is off by default. When you turn it on, the plugin keeps a record of recent emails in your WordPress database: recipients, subject, sender, the SMTP conversation with the server and, if "Include message content" is ticked, the message headers and body. SMTP passwords are never stored. This data is not sent to EmailIdea or anyone else, entries are deleted automatically after 30 days (maximum 200 entries), and you can delete them at any time from the log page. The log table and its settings are removed when the plugin is deleted. 66 49 67 == Features == 50 68 51 * API-based email delivery for maximum reliability 52 * SaaS connectivity with EmailIdea platform 53 * Advanced reporting and email logs 54 * Easy setup via WordPress admin panel 55 * Secure SMTP authentication 56 * Supports SSL/TLS encryption 57 * Works with all WordPress emails (core, plugins, themes) 58 * Test email option to verify configuration 69 * Send all WordPress emails through the EmailIdea SMTP service 70 * Works with core, plugin and theme emails (contact forms, WooCommerce and more) 71 * Simple settings: host, username, password, From email and From name 72 * Test email to verify your configuration 73 * Optional email log: what was sent and the server's reply, with search, status filter, bulk delete and pagination 74 * SMTP login details are never stored in the log 75 * Delivery reporting in your EmailIdea account 59 76 60 77 == Installation == … … 63 80 2. Activate the plugin through the 'Plugins' menu in WordPress. 64 81 3. Go to **Settings → EmailIdea SMTP Mailer**. 65 4. Enter your SMTP credentials (Host, Port, Username, Password). 66 5. Save changes and send a test email to confirm setup. 82 4. Enter your SMTP credentials (Host, Username, Password). 83 5. Enter the From Email and From Name you want your emails to show. 84 6. Tick **Enable EmailIdea SMTP Mailer** at the bottom of the form and click **Save Changes**. The plugin does nothing until this box is ticked. 85 7. Use **Send Test Email** to confirm the setup. 67 86 68 87 == Frequently Asked Questions == 69 88 70 89 = Why do I need this plugin? = 71 WordPress ’s default mail function is unreliable. This plugin ensures your emails are delivered using EmailIdea’s SMTP servers.90 WordPress's default mail function is unreliable on many hosts. This plugin sends your emails through EmailIdea's SMTP servers, which helps them reach the inbox. 72 91 73 92 = Do I need an EmailIdea account? = 74 Yes. You must register at EmailIdea to obtainSMTP credentials.93 Yes. You must register at [EmailIdea](https://emailidea.biz/) to obtain your SMTP credentials. 75 94 76 95 = Will this work with WooCommerce and other plugins? = 77 Yes. Any email sent via WordPress will be routed through EmailIdea SMTP. 96 Yes. Any email sent through WordPress's standard email function is routed through EmailIdea SMTP, including emails from contact form plugins, WooCommerce, membership plugins and password reset emails. 97 98 = My emails are not sending. What should I check? = 99 1. Make sure **Enable EmailIdea SMTP Mailer** is ticked and the settings are saved. 100 2. Check the host, username and password, and re-enter the password if in doubt. 101 3. Fill in the From Email field. 102 4. Send a test email. 103 5. Turn on the email log (Settings → EmailIdea SMTP Logs), send another test email and open the log entry. It shows what was sent and the exact reply from the mail server. 104 105 = Do I need to set a port or encryption? = 106 No. The plugin connects to the EmailIdea SMTP server automatically, on port 587 without encryption, which is what the EmailIdea SMTP service uses. The Port and Encryption settings were removed in version 1.0.2. 107 108 = Is my SMTP password stored? = 109 Your SMTP password is stored in your site's database in the plugin settings, as the plugin needs it to log in to the mail server. It is never written to the email log and never sent to the EmailIdea activity webhook. 110 111 = How do I use the email log? = 112 Go to Settings → EmailIdea SMTP Logs, tick **Enable email logging** and save. Each email then shows its status, recipient, subject, sender and the SMTP conversation. You can search, filter by status, delete entries and choose whether message content is stored. Turn logging off when you finish troubleshooting. 113 114 = Does the plugin send my data anywhere? = 115 Your emails go to the EmailIdea SMTP server, and the plugin notifies EmailIdea when you save settings or submit the deactivation feedback form. Details are listed under External Services above. 78 116 79 117 == Changelog == 118 119 = 1.0.2 = 120 * Fixed: SMTP passwords containing characters such as %, < or > or extra spaces were altered when saved. Passwords are now stored exactly as entered. 121 * Fixed: emails are always sent on port 587 without encryption, which is what the EmailIdea SMTP service supports. The Port and Encryption settings were removed. 122 * Fixed: the settings save no longer waits for the activity webhook, and leftover debug output was removed. 123 * New: optional email log (Settings → EmailIdea SMTP Logs) showing what was sent and the server's reply, with search, filter, bulk delete and pagination. Off by default; login credentials are never stored. 80 124 81 125 = 1.0.1 = … … 87 131 == Upgrade Notice == 88 132 133 = 1.0.2 = 134 Fixes passwords being altered on save. The Port and Encryption settings are removed; all mail is sent on port 587 without encryption. Please re-enter your SMTP password once after updating and send a test email. 135 89 136 = 1.0.1 = 90 137 Performance improvements. -
emailidea-smtp-mailer/trunk/uninstall.php
r3476364 r3779168 27 27 delete_option( $emailidea_smtp_mailer_option ); 28 28 } 29 30 // Email log module. 31 delete_option( 'emailidea_logging_enabled' ); 32 delete_option( 'emailidea_logging_content' ); 33 delete_option( 'emailidea_smtp_db_version' ); 34 delete_option( 'emailidea_smtp_mailer_version' ); 35 delete_transient( 'emailidea_smtp_install_failed' ); 36 delete_transient( 'emailidea_smtp_debug_webhook_log' ); 37 38 global $wpdb; 39 // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.SchemaChange, WordPress.DB.PreparedSQL.InterpolatedNotPrepared 40 $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}emailidea_smtp_logs" );
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)