Make email delivery easy for WordPress. Connect with SMTP, Gmail, Outlook, SendGrid, Mailgun, SES, Zoho, + more. Rated #1 WordPress SMTP Email plugin.
Category Scores
Top Issues by Category
maintainability96
security60
i18n6
Issues Details
164 issues found in latest scan
Unescaped parameter $attachment_files_table used in $wpdb->query()\n$attachment_files_table assigned unsafely at line 143.
Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$am_announcement_params".
Processing form data without nonce verification.
Global constants defined by a theme/plugin should start with the theme/plugin prefix. Found: "WPMS_PHP_VER".
Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "admin_head".
A function call to __() with texts containing placeholders was found, but was not accompanied by a "translators:" comment on the line above to clarify the meaning of the placeholders.
PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit;
Processing form data without nonce verification.
The plugin name includes a restricted term. Your chosen plugin name - "WP Mail SMTP by WPForms - The Most Popular SMTP and Email Log Plugin" - contains the restricted term "plugin" which cannot be used at all in your plugin name.
All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$error'.
All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$help_text'.
unlink() is discouraged. Use wp_delete_file() to delete a file.
In footer ($in_footer) is not set explicitly wp_enqueue_script; It is recommended to load scripts in the footer. Please set this value to `true` to load it in the footer, or explicitly `false` if it should be loaded in the header.
load_plugin_textdomain() has been discouraged since WordPress version 4.6. When your plugin is hosted on WordPress.org, you no longer need to manually include this function call for translations under your plugin slug. WordPress will automatically load the translations for you as needed.
The use of function set_time_limit() is discouraged
Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete().
print_r() found. Debug code should not normally be used in production.
var_dump() found. Debug code should not normally be used in production.
File operations should use WP_Filesystem methods instead of direct PHP filesystem calls. Found: is_writeable().
Plugin name "WP Mail SMTP by WPForms - The Most Popular SMTP and Email Log Plugin" is different from the name declared in plugin header "WP Mail SMTP".
The "/vendor" directory using composer exists, but "composer.json" file is missing.
The "Network" header in the plugin file is not valid. Can only be set to true, and should be left out when not needed.
Missing "License" in Plugin Header. Please update your Plugin Header with a valid GPLv2 (or later) compatible license.
| Code | Type | Message | Count |
|---|---|---|---|
| WordPress.DB.DirectDatabaseQuery.DirectQuery | WARNING | Use of a direct database call is discouraged. | 37 |
| PluginCheck.Security.DirectDB.UnescapedDBParameter | WARNING | Unescaped parameter $attachment_files_table used in $wpdb->query()\n$attachment_files_table assigned unsafely at line 143. | 35 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound | WARNING | Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$am_announcement_params". | 33 |
| WordPress.Security.NonceVerification.Missing | WARNING | Processing form data without nonce verification. | 18 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedConstantFound | WARNING | Global constants defined by a theme/plugin should start with the theme/plugin prefix. Found: "WPMS_PHP_VER". | 4 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound | WARNING | Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "admin_head". | 4 |
| WordPress.WP.I18n.MissingTranslatorsComment | ERROR | A function call to __() with texts containing placeholders was found, but was not accompanied by a "translators:" comment on the line above to clarify the meaning of the placeholders. | 4 |
| missing_direct_file_access_protection | ERROR | PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit; | 4 |
| WordPress.Security.NonceVerification.Recommended | WARNING | Processing form data without nonce verification. | 3 |
| trademarked_term | WARNING | The plugin name includes a restricted term. Your chosen plugin name - "WP Mail SMTP by WPForms - The Most Popular SMTP and Email Log Plugin" - contains the restricted term "plugin" which cannot be used at all in your plugin name. | 3 |
| WordPress.Security.EscapeOutput.ExceptionNotEscaped | ERROR | All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$error'. | 2 |
| WordPress.Security.EscapeOutput.OutputNotEscaped | ERROR | All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$help_text'. | 2 |
| WordPress.WP.AlternativeFunctions.unlink_unlink | ERROR | unlink() is discouraged. Use wp_delete_file() to delete a file. | 2 |
| WordPress.WP.EnqueuedResourceParameters.NotInFooter | WARNING | In footer ($in_footer) is not set explicitly wp_enqueue_script; It is recommended to load scripts in the footer. Please set this value to `true` to load it in the footer, or explicitly `false` if it should be loaded in the header. | 2 |
| PluginCheck.CodeAnalysis.DiscouragedFunctions.load_plugin_textdomainFound | WARNING | load_plugin_textdomain() has been discouraged since WordPress version 4.6. When your plugin is hosted on WordPress.org, you no longer need to manually include this function call for translations under your plugin slug. WordPress will automatically load the translations for you as needed. | 1 |
| Squiz.PHP.DiscouragedFunctions.Discouraged | WARNING | The use of function set_time_limit() is discouraged | 1 |
| WordPress.DB.DirectDatabaseQuery.NoCaching | WARNING | Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete(). | 1 |
| WordPress.PHP.DevelopmentFunctions.error_log_print_r | WARNING | print_r() found. Debug code should not normally be used in production. | 1 |
| WordPress.PHP.DevelopmentFunctions.error_log_var_dump | WARNING | var_dump() found. Debug code should not normally be used in production. | 1 |
| WordPress.WP.AlternativeFunctions.file_system_operations_is_writeable | ERROR | File operations should use WP_Filesystem methods instead of direct PHP filesystem calls. Found: is_writeable(). | 1 |
| WordPress.WP.I18n.MissingArgDomain | ERROR | Missing $domain parameter in function call to esc_html__(). | 1 |
| mismatched_plugin_name | WARNING | Plugin name "WP Mail SMTP by WPForms - The Most Popular SMTP and Email Log Plugin" is different from the name declared in plugin header "WP Mail SMTP". | 1 |
| missing_composer_json_file | WARNING | The "/vendor" directory using composer exists, but "composer.json" file is missing. | 1 |
| plugin_header_invalid_network | ERROR | The "Network" header in the plugin file is not valid. Can only be set to true, and should be left out when not needed. | 1 |
| plugin_header_no_license | ERROR | Missing "License" in Plugin Header. Please update your Plugin Header with a valid GPLv2 (or later) compatible license. | 1 |
Latest Snapshot
Findings
164
Errors
18
Warnings
146
Score History
First score snapshot
First scan completed Jun 19, 2026
v4.8.0 · Plugin Check 2.0.0 · Model 2026.06-mvp-static-v2
Jun 19, 2026
v4.8.0
36
Latest
- Findings
- 164
- Errors
- 18
- Warnings
- 146
- Plugin Check
- 2.0.0
- Model
- 2026.06-mvp-static-v2
| Scan | Score | Findings | Errors | Warnings | Plugin | Plugin Check | Model |
|---|---|---|---|---|---|---|---|
| Jun 19, 2026Latest | 36 | 164 | 18 | 146 | v4.8.0 | 2.0.0 | 2026.06-mvp-static-v2 |