├── .babelrc ├── .eslintignore ├── .eslintrc.js ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── config.yml │ ├── enhancement.md │ └── new-feature.md └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── .husky └── pre-push ├── .npmrc ├── .nvmrc ├── LICENSE ├── README.md ├── assets ├── css │ ├── _conditional-logic.scss │ ├── _confirm.scss │ ├── _education.scss │ ├── _flyout-menu.scss │ ├── _footer.scss │ ├── _general.scss │ ├── _include-media.scss │ ├── _loader.scss │ ├── _normalize.scss │ ├── _toggle.scss │ ├── _tooltip.scss │ ├── _variables.scss │ ├── admin-bar.css │ ├── admin-bar.min.css │ ├── admin-bar.scss │ ├── admin-notifications.css │ ├── admin-notifications.min.css │ ├── admin-notifications.scss │ ├── admin-site-health.css │ ├── admin-site-health.min.css │ ├── admin-site-health.scss │ ├── dashboard-widget.css │ ├── dashboard-widget.min.css │ ├── dashboard-widget.scss │ ├── emails │ │ └── summary-report-email.css │ ├── smtp-about.css │ ├── smtp-about.min.css │ ├── smtp-about.scss │ ├── smtp-admin.css │ ├── smtp-admin.min.css │ ├── smtp-admin.scss │ ├── smtp-smart-routing.css │ ├── smtp-smart-routing.min.css │ ├── smtp-smart-routing.scss │ └── vendor │ │ ├── flatpickr.min.css │ │ ├── jquery-confirm.min.css │ │ └── lity.min.css ├── images │ ├── about │ │ ├── affiliatewp.png │ │ ├── duplicator-icon-large.png │ │ ├── edd.png │ │ ├── icon-full.svg │ │ ├── icon-none.svg │ │ ├── icon-partial.svg │ │ ├── plugin-aioseo.png │ │ ├── plugin-charitable.png │ │ ├── plugin-mi.png │ │ ├── plugin-om.png │ │ ├── plugin-pushengage.png │ │ ├── plugin-rp.png │ │ ├── plugin-seedprod.png │ │ ├── plugin-smash-balloon-facebook-feeds.png │ │ ├── plugin-smash-balloon-instagram-feeds.png │ │ ├── plugin-smash-balloon-twitter-feeds.png │ │ ├── plugin-smash-balloon-youtube-feeds.png │ │ ├── plugin-trustpulse.png │ │ ├── plugin-wpcode.png │ │ ├── plugin-wpf.png │ │ ├── searchwp.png │ │ ├── sugar-calendar.png │ │ ├── team.jpg │ │ └── wp-simple-pay.png │ ├── additional-connections │ │ ├── screenshot-01.png │ │ ├── screenshot-02.png │ │ ├── thumbnail-01.png │ │ └── thumbnail-02.png │ ├── dash-widget │ │ ├── error-icon.svg │ │ ├── smtp │ │ │ ├── delivered.svg │ │ │ ├── sent.svg │ │ │ ├── total.svg │ │ │ └── unsent.svg │ │ ├── wp │ │ │ ├── delivered.svg │ │ │ ├── sent.svg │ │ │ ├── total.svg │ │ │ └── unsent.svg │ │ └── yes-green.svg │ ├── email-reports │ │ ├── screenshot-01.png │ │ ├── screenshot-02.png │ │ ├── screenshot-03.png │ │ ├── thumbnail-01.png │ │ ├── thumbnail-02.png │ │ └── thumbnail-03.png │ ├── email │ │ ├── icon-check.png │ │ ├── illustration-success.svg │ │ ├── signature.png │ │ ├── wp-mail-smtp-whitelabel.png │ │ └── wp-mail-smtp.png │ ├── flyout-menu │ │ ├── facebook.svg │ │ ├── life-ring.svg │ │ ├── lightbulb.svg │ │ ├── mascot.svg │ │ └── star.svg │ ├── font-awesome │ │ ├── arrow-rotate-right-purple.svg │ │ ├── cancel-red.svg │ │ ├── check-circle-dark-green.svg │ │ ├── check-circle-solid-green.svg │ │ ├── clock-orange.svg │ │ ├── exclamation-circle-regular-red.svg │ │ ├── exclamation-circle-solid-orange.svg │ │ ├── exclamation-circle-solid-red.svg │ │ ├── info-circle-blue.svg │ │ └── info-circle.svg │ ├── icons │ │ ├── arrow-up.svg │ │ ├── check-solid.svg │ │ ├── dashicons │ │ │ ├── dashicons-pdf-grey.svg │ │ │ └── dashicons-yes-alt-green.svg │ │ ├── error.svg │ │ ├── exclamation-circle.svg │ │ ├── lightbulb.svg │ │ ├── success.svg │ │ ├── warning.svg │ │ └── zoom.svg │ ├── loaders │ │ ├── loading-blue.svg │ │ ├── loading-white.svg │ │ └── loading.svg │ ├── logo-whitelabel.svg │ ├── logo.svg │ ├── logs │ │ ├── archive-thumbnail.png │ │ ├── archive.png │ │ ├── single-thumbnail.png │ │ └── single.png │ ├── menu-icon.svg │ ├── pattie.svg │ ├── pro-badge-small.svg │ ├── pro-badge.svg │ ├── providers │ │ ├── aws.svg │ │ ├── brevo.svg │ │ ├── elasticemail.svg │ │ ├── google.svg │ │ ├── mailersend.svg │ │ ├── mailgun.svg │ │ ├── mailjet.svg │ │ ├── microsoft.svg │ │ ├── pepipost-smtp.png │ │ ├── pepipost.png │ │ ├── php.svg │ │ ├── postmark.svg │ │ ├── sendgrid.svg │ │ ├── sendlayer.svg │ │ ├── smtp-com.svg │ │ ├── smtp.svg │ │ ├── smtp2go.svg │ │ ├── sparkpost.svg │ │ └── zoho.svg │ ├── recommended.svg │ ├── reports │ │ ├── email │ │ │ ├── icon-arrow-down.png │ │ │ ├── icon-arrow-up.png │ │ │ ├── icon-check-gray.png │ │ │ ├── icon-check.png │ │ │ ├── icon-click.png │ │ │ ├── icon-email.png │ │ │ ├── icon-error.png │ │ │ ├── icon-open.png │ │ │ ├── wp-mail-smtp-logo-dark-whitelabel.png │ │ │ ├── wp-mail-smtp-logo-dark.png │ │ │ ├── wp-mail-smtp-logo-whitelabel.png │ │ │ └── wp-mail-smtp-logo.png │ │ └── icon-note.png │ └── wp-spinner.gif ├── js │ ├── connect.js │ ├── connect.min.js │ ├── smtp-about.js │ ├── smtp-about.min.js │ ├── smtp-admin-notices.js │ ├── smtp-admin-notices.min.js │ ├── smtp-admin.js │ ├── smtp-admin.min.js │ ├── smtp-dashboard-widget.js │ ├── smtp-dashboard-widget.min.js │ ├── smtp-notifications.js │ ├── smtp-notifications.min.js │ ├── smtp-tools-debug-events.js │ ├── smtp-tools-debug-events.min.js │ └── vendor │ │ ├── chart.min.js │ │ ├── chartjs-adapter-moment.min.js │ │ ├── flatpickr.min.js │ │ ├── jquery-confirm.min.js │ │ ├── jquery.matchHeight.js │ │ ├── jquery.matchHeight.min.js │ │ └── lity.min.js ├── languages │ ├── wp-mail-smtp-vue.php │ └── wp-mail-smtp.pot ├── vue │ ├── css │ │ ├── wizard.min.css │ │ └── wizard.rtl.min.css │ ├── img │ │ ├── amazonses.svg │ │ ├── arrow.svg │ │ ├── brevo.svg │ │ ├── check-circle-solid-white.svg │ │ ├── check-circle-solid.svg │ │ ├── check-solid.svg │ │ ├── chevron-down-solid-grey.svg │ │ ├── copy-solid.svg │ │ ├── elasticemail.svg │ │ ├── exclamation-circle-solid.svg │ │ ├── gmail-sign-in-btn.svg │ │ ├── gmail.svg │ │ ├── info-circle-solid.svg │ │ ├── loading-blue.svg │ │ ├── loading-pattie.svg │ │ ├── loading-white.svg │ │ ├── loading.svg │ │ ├── lock-solid.svg │ │ ├── logo.svg │ │ ├── long-arrow-alt-left-regular-grey.svg │ │ ├── long-arrow-alt-left-regular.svg │ │ ├── long-arrow-alt-right-regular-white.svg │ │ ├── long-arrow-alt-right-regular.svg │ │ ├── mailersend.svg │ │ ├── mailgun.svg │ │ ├── mailjet.svg │ │ ├── outlook-sign-in-btn.svg │ │ ├── outlook.svg │ │ ├── postmark.svg │ │ ├── pro-badge.svg │ │ ├── question-circle-solid.svg │ │ ├── sendgrid.svg │ │ ├── sendlayer.svg │ │ ├── smtp.svg │ │ ├── smtp2go.svg │ │ ├── smtpcom.svg │ │ ├── sparkpost.svg │ │ ├── star-solid.svg │ │ ├── thumbs-down-hover.svg │ │ ├── thumbs-down.svg │ │ ├── thumbs-up-hover.svg │ │ ├── thumbs-up.svg │ │ ├── times-solid-grey.svg │ │ ├── times-solid.svg │ │ ├── working.svg │ │ └── zoho.svg │ └── js │ │ ├── chunk-vendors.min.js │ │ └── wizard.min.js └── wporg │ ├── banner-1544x500.png │ ├── banner-772x250.png │ ├── icon-128x128.png │ ├── icon-256x256.png │ ├── screenshot-1.png │ ├── screenshot-10.png │ ├── screenshot-11.png │ ├── screenshot-12.png │ ├── screenshot-13.png │ ├── screenshot-14.png │ ├── screenshot-15.png │ ├── screenshot-16.png │ ├── screenshot-2.png │ ├── screenshot-3.png │ ├── screenshot-4.png │ ├── screenshot-5.png │ ├── screenshot-6.png │ ├── screenshot-7.png │ ├── screenshot-8.png │ └── screenshot-9.png ├── composer.json ├── gulpfile.mjs ├── package-lock.json ├── package.json ├── php-scoper ├── check-build-php-version.php ├── check-plugin-php-version.php ├── composer.json ├── composer.lock └── config.php ├── readme.txt ├── src ├── AbstractConnection.php ├── Admin │ ├── AdminBarMenu.php │ ├── Area.php │ ├── ConnectionSettings.php │ ├── DashboardWidget.php │ ├── DebugEvents │ │ ├── DebugEvents.php │ │ ├── Event.php │ │ ├── EventsCollection.php │ │ ├── Migration.php │ │ └── Table.php │ ├── DomainChecker.php │ ├── Education.php │ ├── FlyoutMenu.php │ ├── Notifications.php │ ├── PageAbstract.php │ ├── PageInterface.php │ ├── Pages │ │ ├── About.php │ │ ├── AboutTab.php │ │ ├── ActionSchedulerTab.php │ │ ├── AdditionalConnectionsTab.php │ │ ├── AlertsTab.php │ │ ├── AuthTab.php │ │ ├── ControlTab.php │ │ ├── DebugEventsTab.php │ │ ├── EmailReports.php │ │ ├── EmailReportsTab.php │ │ ├── ExportTab.php │ │ ├── Logs.php │ │ ├── LogsTab.php │ │ ├── MiscTab.php │ │ ├── SettingsTab.php │ │ ├── SmartRoutingTab.php │ │ ├── TestTab.php │ │ ├── Tools.php │ │ └── VersusTab.php │ ├── ParentPageAbstract.php │ ├── PluginsInstallSkin.php │ ├── Review.php │ └── SetupWizard.php ├── Compatibility │ ├── Compatibility.php │ └── Plugin │ │ ├── Admin2020.php │ │ ├── PluginAbstract.php │ │ ├── PluginInterface.php │ │ ├── WPForms.php │ │ ├── WPFormsLite.php │ │ └── WooCommerce.php ├── Conflicts.php ├── Connect.php ├── Connection.php ├── ConnectionInterface.php ├── ConnectionsManager.php ├── Core.php ├── DBRepair.php ├── Debug.php ├── Geo.php ├── Helpers │ ├── Crypto.php │ ├── DB.php │ ├── Helpers.php │ ├── PluginImportDataRetriever.php │ └── UI.php ├── MailCatcher.php ├── MailCatcherInterface.php ├── MailCatcherTrait.php ├── MailCatcherV6.php ├── Migration.php ├── MigrationAbstract.php ├── Migrations.php ├── OptimizedEmailSending.php ├── Options.php ├── Processor.php ├── Providers │ ├── AmazonSES │ │ └── Options.php │ ├── AuthAbstract.php │ ├── AuthInterface.php │ ├── ElasticEmail │ │ ├── Mailer.php │ │ └── Options.php │ ├── Gmail │ │ ├── Auth.php │ │ ├── Mailer.php │ │ └── Options.php │ ├── Loader.php │ ├── Mail │ │ ├── Mailer.php │ │ └── Options.php │ ├── MailerAbstract.php │ ├── MailerInterface.php │ ├── MailerSend │ │ ├── Mailer.php │ │ └── Options.php │ ├── Mailgun │ │ ├── Mailer.php │ │ └── Options.php │ ├── Mailjet │ │ ├── Mailer.php │ │ └── Options.php │ ├── OptionsAbstract.php │ ├── OptionsInterface.php │ ├── Outlook │ │ ├── Options.php │ │ └── Provider.php │ ├── Pepipost │ │ ├── Mailer.php │ │ └── Options.php │ ├── PepipostAPI │ │ ├── Mailer.php │ │ └── Options.php │ ├── Postmark │ │ ├── Mailer.php │ │ └── Options.php │ ├── SMTP │ │ ├── Mailer.php │ │ └── Options.php │ ├── SMTP2GO │ │ ├── Mailer.php │ │ └── Options.php │ ├── SMTPcom │ │ ├── Mailer.php │ │ └── Options.php │ ├── Sendgrid │ │ ├── Mailer.php │ │ └── Options.php │ ├── Sendinblue │ │ ├── Api.php │ │ ├── Mailer.php │ │ └── Options.php │ ├── Sendlayer │ │ ├── Mailer.php │ │ └── Options.php │ ├── SparkPost │ │ ├── Mailer.php │ │ └── Options.php │ └── Zoho │ │ └── Options.php ├── Queue │ ├── Attachments.php │ ├── Email.php │ ├── Migration.php │ └── Queue.php ├── Reports │ ├── Emails │ │ └── Summary.php │ └── Reports.php ├── SiteHealth.php ├── Tasks │ ├── DebugEventsCleanupTask.php │ ├── Meta.php │ ├── NotificationsUpdateTask.php │ ├── Queue │ │ ├── CleanupQueueTask.php │ │ ├── ProcessQueueTask.php │ │ └── SendEnqueuedEmailTask.php │ ├── Reports │ │ └── SummaryEmailTask.php │ ├── Task.php │ └── Tasks.php ├── Upgrade.php ├── Uploads.php ├── UsageTracking │ ├── SendUsageTask.php │ └── UsageTracking.php ├── WP.php ├── WPMailArgs.php └── WPMailInitiator.php ├── uninstall.php ├── wp-mail-smtp.php └── wp_mail_smtp.php /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@babel/preset-env", 5 | { 6 | "modules": false, 7 | "targets": { 8 | "browsers": [ 9 | "last 2 Chrome versions", 10 | "last 2 Firefox versions", 11 | "last 2 Safari versions", 12 | "last 2 iOS versions", 13 | "last 1 Android version", 14 | "last 1 ChromeAndroid version", 15 | "ie 11" 16 | ] 17 | } 18 | } 19 | ] 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | node_modules/ 3 | /.packages/ 4 | /build/ 5 | gulpfile.mjs 6 | assets/js/vendor/ 7 | assets/pro/js/vendor/ 8 | assets/js/*.min.js 9 | assets/pro/js/*.min.js 10 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | /composer.lock -merge 2 | * text=auto 3 | 4 | *.js text eol=lf 5 | *.css text eol=lf 6 | *.php text eol=lf 7 | *.md text eol=lf 8 | *.txt text eol=lf 9 | *.json text eol=lf 10 | *.lock text eol=lf 11 | *.xml text eol=lf 12 | *.pot text eol=lf 13 | *.po text eol=lf 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve. 4 | title: '' 5 | labels: 'bug' 6 | assignees: '' 7 | 8 | --- 9 | 10 | ## Expected Behavior 11 | 12 | 13 | 14 | ## Current Behavior 15 | 16 | 17 | 18 | ## Possible Solution 19 | 20 | 21 | 22 | ## Steps to Reproduce 23 | 24 | 25 | 1. 26 | 2. 27 | 3. 28 | 4. 29 | 30 | 31 | ## Screenshots 32 | 33 | 34 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/enhancement.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Enhancement 3 | about: Suggest an enhancement/improvement. 4 | title: '' 5 | labels: 'enhancement' 6 | assignees: '' 7 | 8 | --- 9 | 10 | ## Expected Behavior 11 | 12 | 13 | 14 | ## Current Behavior 15 | 16 | 17 | 18 | ## Screenshots 19 | 20 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/new-feature.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: New Feature 3 | about: New feature. 4 | title: '' 5 | labels: 'feature' 6 | assignees: '' 7 | 8 | --- 9 | 10 | ## Description 11 | 12 | 13 | 14 | 15 | ## Screenshots 16 | 17 | 18 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## Description 2 | 3 | 4 | 5 | 6 | ## Motivation and Context 7 | 8 | 9 | 10 | 11 | ## Testing procedure 12 | 13 | 14 | 15 | 16 | 17 | ## Screenshots 18 | 19 | 20 | 21 | ## Types of changes 22 | 23 | 24 | - [ ] Bug fix (non-breaking change which fixes an issue) 25 | - [ ] Enhancement (modification of the currently available functionality) 26 | - [ ] New feature (non-breaking change which adds functionality) 27 | - [ ] Breaking change (fix or feature that would cause existing functionality to change) 28 | 29 | ## Checklist: 30 | 31 | 32 | 33 | - [ ] I've tested both Lite and Pro version of the plugin with these changes. 34 | - [ ] My change requires a change to the documentation. 35 | - [ ] I have updated the documentation accordingly. 36 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | /build/ 3 | node_modules/ 4 | /vendor/ 5 | /vendor_prefixed/ 6 | /php-scoper/vendor/ 7 | .phpcs-cache 8 | *.hot-update.json 9 | *.hot-update.js 10 | .env 11 | -------------------------------------------------------------------------------- /.husky/pre-push: -------------------------------------------------------------------------------- 1 | npm run --silent cs 2 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 18.19.0 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [WP Mail SMTP](https://wordpress.org/plugins/wp-mail-smtp/) # 2 | 3 | ![Plugin Version](https://img.shields.io/wordpress/plugin/v/wp-mail-smtp.svg?style=flat-square) ![Total Downloads](https://img.shields.io/wordpress/plugin/dt/wp-mail-smtp.svg?style=flat-square) ![Plugin Rating](https://img.shields.io/wordpress/plugin/r/wp-mail-smtp.svg?style=flat-square) ![WordPress Compatibility](https://img.shields.io/wordpress/v/wp-mail-smtp.svg?style=flat-square) ![License](https://img.shields.io/badge/license-GPL--2.0%2B-red.svg?style=flat-square) 4 | 5 | ### Welcome to our GitHub Repository!!! 6 | 7 | `master` branch is always stable and contains latest releases. 8 | 9 | ## Bugs ## 10 | If you find an bug or problem, please let us know by [creating an issue](https://github.com/awesomemotive/wp-mail-smtp/issues?state=open)! 11 | 12 | ## Development Requirements ## 13 | 14 | * **PHP 7.3+** 15 | * **Composer v1.x**. If you are currently using the composer v2.x please switch to v1.x with this command: `composer self-update --1` 16 | * **WP-CLI** must be accessible by `wp` command 17 | * **Node.js**. Check required version in package.json 18 | * **GIT** 19 | 20 | ## Development ## 21 | 22 | 1. clone this repository to your computer 23 | 2. in the root of the repository run `npm install` and `composer build-lite` 24 | 3. WP Mail SMTP Lite is ready for development 25 | 26 | ## Contributions ## 27 | Contributions to WPForms are welcome! 28 | 29 | 1. Open an [Issue](https://github.com/awesomemotive/wp-mail-smtp/issues) on GitHub. 30 | 2. Fork WP Mail SMTP on GitHub. 31 | 3. Create a new branch. 32 | 4. When committing, reference your issue and provide notes/feedback. 33 | 5. Send us a Pull Request with your bug fixes and/or new features. 34 | -------------------------------------------------------------------------------- /assets/css/_conditional-logic.scss: -------------------------------------------------------------------------------- 1 | #wp-mail-smtp { 2 | 3 | .wp-mail-smtp-conditional { 4 | 5 | button { 6 | cursor: pointer; 7 | } 8 | 9 | table { 10 | width: 100%; 11 | max-width: 740px; 12 | padding: 0; 13 | margin: 0; 14 | border-collapse: collapse; 15 | border-spacing: 0; 16 | font-size: 13px; 17 | } 18 | 19 | table td { 20 | padding: 0 10px 20px 0; 21 | } 22 | 23 | &__row { 24 | 25 | @include media("<=phone") { 26 | display: flex; 27 | flex-direction: column; 28 | } 29 | 30 | input, 31 | select { 32 | width: 100% !important; 33 | max-width: 100%; 34 | margin: 0; 35 | text-overflow: ellipsis; 36 | } 37 | } 38 | 39 | &__property-col { 40 | width: 23%; 41 | 42 | @include media("<=phone") { 43 | width: 100%; 44 | } 45 | } 46 | 47 | &__operator-col { 48 | width: 23%; 49 | 50 | @include media("<=phone") { 51 | width: 100%; 52 | } 53 | } 54 | 55 | &__value-col { 56 | width: 42%; 57 | 58 | @include media("<=phone") { 59 | width: 100%; 60 | } 61 | } 62 | 63 | &__value :disabled { 64 | background-color: #f1f1f1; 65 | cursor: not-allowed; 66 | } 67 | 68 | &__actions { 69 | display: flex; 70 | align-items: center; 71 | padding-right: 0; 72 | } 73 | 74 | &__delete-rule { 75 | background-color: transparent; 76 | border: none; 77 | color: #999999; 78 | margin: 0 0 0 10px; 79 | padding: 0; 80 | vertical-align: middle; 81 | 82 | &:hover { 83 | color: $negative; 84 | } 85 | } 86 | 87 | &__group-delimiter { 88 | margin: 0 0 20px; 89 | font-size: 14px; 90 | font-style: italic; 91 | font-weight: 400; 92 | line-height: 17px; 93 | color: $description-text; 94 | } 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /assets/css/_footer.scss: -------------------------------------------------------------------------------- 1 | .wp-mail-smtp-admin-page-body { 2 | 3 | #wpbody-content { 4 | padding-bottom: 200px; 5 | 6 | @include media( "<=tablet" ) { 7 | padding-bottom: 0 !important; 8 | } 9 | } 10 | 11 | #wpfooter { 12 | 13 | a { 14 | color: $link !important; 15 | 16 | &:hover, 17 | &:active { 18 | color: $link-hover !important; 19 | } 20 | } 21 | 22 | .wp-mail-smtp-footer-promotion { 23 | text-align: center; 24 | font-weight: 400; 25 | font-size: 13px; 26 | line-height: normal; 27 | color: #646970; 28 | padding: 30px 0; 29 | margin-bottom: 20px; 30 | 31 | p { 32 | font-weight: 600; 33 | } 34 | } 35 | 36 | .wp-mail-smtp-footer-promotion-links, 37 | .wp-mail-smtp-footer-promotion-social { 38 | display: flex; 39 | justify-content: center; 40 | align-items: center; 41 | } 42 | 43 | .wp-mail-smtp-footer-promotion-links { 44 | margin: 10px 0; 45 | color: #646970; 46 | 47 | a { 48 | color: #04558a; 49 | 50 | &:hover { 51 | color: #04558a; 52 | } 53 | } 54 | 55 | span { 56 | color: #c3c4c7; 57 | padding: 0 7px; 58 | } 59 | } 60 | 61 | .wp-mail-smtp-footer-promotion-social { 62 | gap: 10px; 63 | margin: 0; 64 | 65 | li { 66 | margin-bottom: 0; 67 | 68 | path { 69 | color: #646970; 70 | } 71 | } 72 | 73 | li:hover { 74 | 75 | path { 76 | fill: #50575e; 77 | } 78 | } 79 | 80 | a { 81 | display: block; 82 | height: 16px; 83 | } 84 | } 85 | 86 | #footer-left { 87 | color: #50575e; 88 | font-size: 13px; 89 | font-style: normal; 90 | font-weight: 400; 91 | line-height: normal; 92 | 93 | strong { 94 | font-weight: 600; 95 | } 96 | } 97 | } 98 | } -------------------------------------------------------------------------------- /assets/css/_general.scss: -------------------------------------------------------------------------------- 1 | // Core admin style overrides. 2 | #wpcontent { 3 | padding-left: 0 !important; 4 | position: relative; 5 | 6 | @include media("<=phone") { 7 | padding-top: 46px; 8 | } 9 | } 10 | 11 | #wpbody { 12 | @include media("<=phone") { 13 | padding-top: 0; 14 | } 15 | } 16 | 17 | // Fade in-out with a "peak stop" animation. 18 | @-webkit-keyframes wp-mail-smtp-fade-in-stop-out { 19 | 0%,100% { opacity: 0 } 20 | 35% { opacity: 1 } 21 | 65% { opacity: 1 } 22 | } 23 | 24 | @keyframes wp-mail-smtp-fade-in-stop-out { 25 | 0%,100% { opacity: 0 } 26 | 35% { opacity: 1 } 27 | 65% { opacity: 1 } 28 | } 29 | -------------------------------------------------------------------------------- /assets/css/_loader.scss: -------------------------------------------------------------------------------- 1 | // Custom style for the plugin SVG loader. 2 | .wp-mail-smtp-loading { 3 | animation: 0.65s linear infinite wp-mail-smtp-loading-spin; 4 | } 5 | 6 | .wp-mail-smtp-loading-md { 7 | width: 32px; 8 | height: 32px; 9 | } 10 | 11 | .wp-mail-smtp-loading-sm { 12 | width: 16px; 13 | height: 16px; 14 | } 15 | 16 | // CSS loading spinner. 17 | .wp-mail-smtp-loading-spin { 18 | position: relative; 19 | color: transparent !important; 20 | pointer-events: none; 21 | 22 | &:after { 23 | position: absolute; 24 | box-sizing: border-box; 25 | animation: 0.65s linear infinite wp-mail-smtp-loading-spin; 26 | border: 2px solid #fff; 27 | border-radius: 50%; 28 | border-right-color: transparent !important; 29 | border-top-color: transparent !important; 30 | content: ""; 31 | display: block; 32 | top: 50%; 33 | left: 50%; 34 | width: 16px; 35 | height: 16px; 36 | margin-top: -8px; 37 | margin-left: -8px; 38 | } 39 | } 40 | 41 | @keyframes wp-mail-smtp-loading-spin { 42 | 0% { 43 | transform: rotateZ(270deg); 44 | } 45 | 100% { 46 | transform: rotateZ(630deg) 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /assets/css/_toggle.scss: -------------------------------------------------------------------------------- 1 | .wp-mail-smtp-toggle { 2 | vertical-align: middle; 3 | display: inline-flex; 4 | align-items: center; 5 | -webkit-user-select: none; 6 | -moz-user-select: none; 7 | -ms-user-select: none; 8 | user-select: none; 9 | 10 | &__switch { 11 | position: relative; 12 | width: 27px; 13 | height: 17px; 14 | flex-shrink: 0; 15 | cursor: pointer; 16 | background-color: #ccc; 17 | border-radius: 10px; 18 | -webkit-transition: all 0.2s ease-in-out; 19 | -moz-transition: all 0.2s ease-in-out; 20 | -ms-transition: all 0.2s ease-in-out; 21 | transition: all 0.2s ease-in-out; 22 | 23 | &:before { 24 | position: absolute; 25 | content: ""; 26 | height: 13px; 27 | width: 13px; 28 | left: 2px; 29 | top: 2px; 30 | background-color: #fff; 31 | border-radius: 50%; 32 | -webkit-transition: all 0.2s ease-in-out; 33 | -moz-transition: all 0.2s ease-in-out; 34 | -ms-transition: all 0.2s ease-in-out; 35 | transition: all 0.2s ease-in-out; 36 | } 37 | } 38 | 39 | &__label { 40 | display: none; 41 | margin-left: 10px; 42 | font-weight: 400; 43 | font-size: 13px; 44 | line-height: 15px; 45 | color: $secondary-text; 46 | text-transform: uppercase; 47 | } 48 | 49 | &__label--static { 50 | display: block; 51 | text-transform: none; 52 | } 53 | 54 | input[type=checkbox] { 55 | position: absolute; 56 | top: auto; 57 | overflow: hidden; 58 | clip: rect(1px, 1px, 1px, 1px); 59 | width: 1px; 60 | height: 1px; 61 | white-space: nowrap; 62 | 63 | &:not(:checked) { 64 | &:hover, 65 | &:focus { 66 | & + .wp-mail-smtp-toggle__switch { 67 | box-shadow: 0 0 0 1px #fff, 0 0 0 3px #999; 68 | background-color: #999; 69 | } 70 | } 71 | 72 | & ~ .wp-mail-smtp-toggle__label--unchecked { 73 | display: block; 74 | } 75 | } 76 | 77 | &:checked { 78 | & + .wp-mail-smtp-toggle__switch { 79 | background-color: $positive; 80 | 81 | &:before { 82 | -webkit-transform: translateX(10px); 83 | -ms-transform: translateX(10px); 84 | transform: translateX(10px); 85 | } 86 | } 87 | 88 | &:hover, 89 | &:focus { 90 | & + .wp-mail-smtp-toggle__switch { 91 | box-shadow: 0 0 0 1px #fff, 0 0 0 3px $positive; 92 | } 93 | } 94 | 95 | & ~ .wp-mail-smtp-toggle__label--checked { 96 | display: block; 97 | } 98 | } 99 | 100 | &:disabled { 101 | &:hover, 102 | &:focus { 103 | & + .wp-mail-smtp-toggle__switch { 104 | box-shadow: none; 105 | } 106 | } 107 | 108 | & ~ * { 109 | opacity: .5; 110 | cursor: default; 111 | } 112 | } 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /assets/css/_tooltip.scss: -------------------------------------------------------------------------------- 1 | .wp-mail-smtp-tooltip { 2 | position: relative; 3 | display: inline-block; 4 | text-decoration: underline; 5 | text-decoration-style: dotted; 6 | cursor: help; 7 | color: $secondary-text; 8 | margin-top: 15px !important; 9 | 10 | &-with-icon { 11 | margin-top: 2px !important; 12 | margin-left: 10px; 13 | 14 | .wp-mail-smtp-tooltip-text { 15 | bottom: 130%; 16 | } 17 | } 18 | 19 | &-text { 20 | visibility: hidden; 21 | position: absolute; 22 | z-index: 9999; 23 | width: 360px; 24 | background-color: #2D4F60; 25 | color: #fff; 26 | text-align: center; 27 | padding: 16px 20px; 28 | font-size: 14px; 29 | border-radius: 5px; 30 | bottom: 100%; 31 | left: 50%; 32 | margin-left: -180px; 33 | 34 | &::after { 35 | content: " "; 36 | position: absolute; 37 | top: 100%; 38 | left: 50%; 39 | margin-left: -5px; 40 | border-width: 5px; 41 | border-style: solid; 42 | border-color: #2D4F60 transparent transparent transparent; 43 | } 44 | } 45 | 46 | &-small-text { 47 | font-size: 12px; 48 | line-height: 140%; 49 | text-align: left; 50 | 51 | code, kbd { 52 | font-size: 12px; 53 | } 54 | } 55 | 56 | &:hover .wp-mail-smtp-tooltip-text { 57 | visibility: visible; 58 | } 59 | } 60 | 61 | .wp-mail-smtp-page { 62 | label.wp-mail-smtp-setting-label-with-tooltip { 63 | .wp-mail-smtp-tooltip-with-icon { 64 | margin-left: 0; 65 | position: relative; 66 | left: 0; 67 | top: 0; 68 | vertical-align: top; 69 | } 70 | } 71 | 72 | .wp-mail-smtp-tooltip { 73 | &-text { 74 | a { 75 | color: #fff; 76 | 77 | &:active, 78 | &:hover { 79 | color: #fff; 80 | } 81 | } 82 | } 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /assets/css/_variables.scss: -------------------------------------------------------------------------------- 1 | // Color styles 2 | $primary-text: #2c3337; 3 | $secondary-text: #50575e; 4 | $description-text: #646970; 5 | $field-text: #2c3337; 6 | $field-border: #8d8f95; 7 | $steel: #738E9E; 8 | $steel-dark: #395360; 9 | $orange: #E27730; 10 | $orange-dark: #B85A1B; 11 | $link: #2171B1; 12 | $link-hover: #135e96; 13 | $positive: #00A32A; 14 | $negative: #D63638; 15 | 16 | $grey: #A9A9A9; 17 | 18 | $modal-orange: #E27730; 19 | $modal-green: #00A32A; 20 | $modal-red: #D63638; 21 | $modal-blue: #3582c4; 22 | 23 | // Effect styles 24 | $shadow-sm: 0px 1px 2px rgba(0, 0, 0, 0.07); 25 | $shadow-md: 0px 2px 4px rgba(0, 0, 0, 0.07); 26 | $shadow-lg: 0px 2px 10px rgba(0, 0, 0, 0.15); 27 | 28 | $content-padding: 20px; 29 | $padding-default: 30px; 30 | 31 | $border-color: #E5E6E6; 32 | $border-radius: 4px; 33 | $border: 1px solid $border-color; 34 | 35 | $breakpoints: ( 36 | 'xs-phone': 320px, 37 | 'phone': 600px, 38 | 'ipad': 768px, 39 | 'tablet': 782px, 40 | 'desktop': 960px, 41 | ); 42 | -------------------------------------------------------------------------------- /assets/css/admin-bar.css: -------------------------------------------------------------------------------- 1 | #wpadminbar .wp-mail-smtp-admin-bar-menu-notification-counter, 2 | #wpadminbar .wp-mail-smtp-admin-bar-menu-error { 3 | display: inline-block !important; 4 | vertical-align: top !important; 5 | box-sizing: border-box !important; 6 | margin: 7px 0 0 2px !important; 7 | padding: 0 5px !important; 8 | min-width: 18px !important; 9 | height: 18px !important; 10 | border-radius: 9px !important; 11 | background-color: #D63638 !important; 12 | color: #fff !important; 13 | font-size: 11px !important; 14 | line-height: 1.6 !important; 15 | text-align: center !important; 16 | } 17 | #wpadminbar .wp-mail-smtp-admin-bar-menu-notification-counter span, 18 | #wpadminbar .wp-mail-smtp-admin-bar-menu-error span { 19 | line-height: 1 !important; 20 | font-size: 11px !important; 21 | } 22 | 23 | body.wp-admin #adminmenu #toplevel_page_wp-mail-smtp .wp-menu-image.svg { 24 | background-position-x: 10px; 25 | background-position-y: 8px; 26 | } 27 | 28 | @media screen and (max-width: 782px) { 29 | body.wp-admin #adminmenu #toplevel_page_wp-mail-smtp .wp-menu-image.svg { 30 | background-position-x: 9px; 31 | } 32 | } 33 | /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFkbWluLWJhci5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtDO0FBQUE7RUFFQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtBQUFBO0VBQ0M7RUFDQTs7O0FBTUY7RUFDQztFQUNBOzs7QUFJRjtFQUVFO0lBQ0MiLCJmaWxlIjoiYXNzZXRzL2Nzcy9hZG1pbi1iYXIuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gV1AgTWFpbCBTTVRQIGFkbWluIGJhciBtZW51IHN0eWxlcy5cblxuQGltcG9ydCBcInZhcmlhYmxlc1wiO1xuXG4jd3BhZG1pbmJhciB7XG5cdC53cC1tYWlsLXNtdHAtYWRtaW4tYmFyLW1lbnUtbm90aWZpY2F0aW9uLWNvdW50ZXIsXG5cdC53cC1tYWlsLXNtdHAtYWRtaW4tYmFyLW1lbnUtZXJyb3Ige1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xuXHRcdHZlcnRpY2FsLWFsaWduOiB0b3AgIWltcG9ydGFudDtcblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7XG5cdFx0bWFyZ2luOiA3cHggMCAwIDJweCAhaW1wb3J0YW50O1xuXHRcdHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7XG5cdFx0bWluLXdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7XG5cdFx0aGVpZ2h0OiAxOHB4ICFpbXBvcnRhbnQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogOXB4ICFpbXBvcnRhbnQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5lZ2F0aXZlICFpbXBvcnRhbnQ7XG5cdFx0Y29sb3I6ICNmZmYgIWltcG9ydGFudDtcblx0XHRmb250LXNpemU6IDExcHggIWltcG9ydGFudDtcblx0XHRsaW5lLWhlaWdodDogMS42ICFpbXBvcnRhbnQ7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG5cblx0XHRzcGFuIHtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxICFpbXBvcnRhbnQ7XG5cdFx0XHRmb250LXNpemU6IDExcHggIWltcG9ydGFudDtcblx0XHR9XG5cdH1cbn1cblxuYm9keS53cC1hZG1pbiB7XG5cdCNhZG1pbm1lbnUgI3RvcGxldmVsX3BhZ2Vfd3AtbWFpbC1zbXRwIC53cC1tZW51LWltYWdlLnN2ZyB7XG5cdFx0YmFja2dyb3VuZC1wb3NpdGlvbi14OiAxMHB4O1xuXHRcdGJhY2tncm91bmQtcG9zaXRpb24teTogOHB4O1xuXHR9XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc4MnB4KSB7XG5cdGJvZHkud3AtYWRtaW4ge1xuXHRcdCNhZG1pbm1lbnUgI3RvcGxldmVsX3BhZ2Vfd3AtbWFpbC1zbXRwIC53cC1tZW51LWltYWdlLnN2ZyB7XG5cdFx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IDlweDtcblx0XHR9XG5cdH1cbn0iXX0= */ 34 | -------------------------------------------------------------------------------- /assets/css/admin-bar.min.css: -------------------------------------------------------------------------------- 1 | #wpadminbar .wp-mail-smtp-admin-bar-menu-notification-counter,#wpadminbar .wp-mail-smtp-admin-bar-menu-error{display:inline-block !important;vertical-align:top !important;box-sizing:border-box !important;margin:7px 0 0 2px !important;padding:0 5px !important;min-width:18px !important;height:18px !important;border-radius:9px !important;background-color:#d63638 !important;color:#fff !important;font-size:11px !important;line-height:1.6 !important;text-align:center !important}#wpadminbar .wp-mail-smtp-admin-bar-menu-notification-counter span,#wpadminbar .wp-mail-smtp-admin-bar-menu-error span{line-height:1 !important;font-size:11px !important}body.wp-admin #adminmenu #toplevel_page_wp-mail-smtp .wp-menu-image.svg{background-position-x:10px;background-position-y:8px}@media screen and (max-width: 782px){body.wp-admin #adminmenu #toplevel_page_wp-mail-smtp .wp-menu-image.svg{background-position-x:9px}} -------------------------------------------------------------------------------- /assets/css/admin-bar.scss: -------------------------------------------------------------------------------- 1 | // WP Mail SMTP admin bar menu styles. 2 | 3 | @import "variables"; 4 | 5 | #wpadminbar { 6 | .wp-mail-smtp-admin-bar-menu-notification-counter, 7 | .wp-mail-smtp-admin-bar-menu-error { 8 | display: inline-block !important; 9 | vertical-align: top !important; 10 | box-sizing: border-box !important; 11 | margin: 7px 0 0 2px !important; 12 | padding: 0 5px !important; 13 | min-width: 18px !important; 14 | height: 18px !important; 15 | border-radius: 9px !important; 16 | background-color: $negative !important; 17 | color: #fff !important; 18 | font-size: 11px !important; 19 | line-height: 1.6 !important; 20 | text-align: center !important; 21 | 22 | span { 23 | line-height: 1 !important; 24 | font-size: 11px !important; 25 | } 26 | } 27 | } 28 | 29 | body.wp-admin { 30 | #adminmenu #toplevel_page_wp-mail-smtp .wp-menu-image.svg { 31 | background-position-x: 10px; 32 | background-position-y: 8px; 33 | } 34 | } 35 | 36 | @media screen and (max-width: 782px) { 37 | body.wp-admin { 38 | #adminmenu #toplevel_page_wp-mail-smtp .wp-menu-image.svg { 39 | background-position-x: 9px; 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /assets/css/admin-site-health.min.css: -------------------------------------------------------------------------------- 1 | #health-check-accordion-block-wp_mail_smtp_email_domain_check>p:first-child{margin-top:0}#wp-mail-smtp-domain-check-details h2{color:#2c3338;font-weight:600;font-size:13px;margin:0 0 15px}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item{padding:10px 0 0;border-top:1px solid #e4e4e4;display:flex}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item:last-child{border-bottom:1px solid #e4e4e4}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item-icon{width:18px;height:16px;margin-right:10px}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item-content h3{text-transform:uppercase;font-weight:500;font-size:14px;line-height:17px;margin:0 0 4px 0;color:#2c3337}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item-content p{margin:0 0 10px 0;color:#50575e} -------------------------------------------------------------------------------- /assets/css/admin-site-health.scss: -------------------------------------------------------------------------------- 1 | @import "variables"; 2 | 3 | #health-check-accordion-block-wp_mail_smtp_email_domain_check { 4 | & > p:first-child { 5 | margin-top: 0; 6 | } 7 | } 8 | 9 | #wp-mail-smtp-domain-check-details { 10 | h2 { 11 | color: #2c3338; 12 | font-weight: 600; 13 | font-size: 13px; 14 | margin: 0 0 15px; 15 | } 16 | 17 | .wp-mail-smtp-domain-check-details-check-list { 18 | &-item { 19 | padding: 10px 0 0; 20 | border-top: 1px solid #E4E4E4; 21 | display: flex; 22 | 23 | &:last-child { 24 | border-bottom: 1px solid #E4E4E4; 25 | } 26 | 27 | &-icon { 28 | width: 18px; 29 | height: 16px; 30 | margin-right: 10px; 31 | } 32 | 33 | &-content { 34 | h3 { 35 | text-transform: uppercase; 36 | font-weight: 500; 37 | font-size: 14px; 38 | line-height: 17px; 39 | margin: 0 0 4px 0; 40 | color: $primary-text; 41 | } 42 | 43 | p { 44 | margin: 0 0 10px 0; 45 | color: $secondary-text; 46 | } 47 | } 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /assets/images/about/affiliatewp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/affiliatewp.png -------------------------------------------------------------------------------- /assets/images/about/duplicator-icon-large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/duplicator-icon-large.png -------------------------------------------------------------------------------- /assets/images/about/edd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/edd.png -------------------------------------------------------------------------------- /assets/images/about/icon-full.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/about/icon-none.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/about/icon-partial.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/about/plugin-aioseo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/plugin-aioseo.png -------------------------------------------------------------------------------- /assets/images/about/plugin-charitable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/plugin-charitable.png -------------------------------------------------------------------------------- /assets/images/about/plugin-mi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/plugin-mi.png -------------------------------------------------------------------------------- /assets/images/about/plugin-om.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/plugin-om.png -------------------------------------------------------------------------------- /assets/images/about/plugin-pushengage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/plugin-pushengage.png -------------------------------------------------------------------------------- /assets/images/about/plugin-rp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/plugin-rp.png -------------------------------------------------------------------------------- /assets/images/about/plugin-seedprod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/plugin-seedprod.png -------------------------------------------------------------------------------- /assets/images/about/plugin-smash-balloon-facebook-feeds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/plugin-smash-balloon-facebook-feeds.png -------------------------------------------------------------------------------- /assets/images/about/plugin-smash-balloon-instagram-feeds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/plugin-smash-balloon-instagram-feeds.png -------------------------------------------------------------------------------- /assets/images/about/plugin-smash-balloon-twitter-feeds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/plugin-smash-balloon-twitter-feeds.png -------------------------------------------------------------------------------- /assets/images/about/plugin-smash-balloon-youtube-feeds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/plugin-smash-balloon-youtube-feeds.png -------------------------------------------------------------------------------- /assets/images/about/plugin-trustpulse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/plugin-trustpulse.png -------------------------------------------------------------------------------- /assets/images/about/plugin-wpcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/plugin-wpcode.png -------------------------------------------------------------------------------- /assets/images/about/plugin-wpf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/plugin-wpf.png -------------------------------------------------------------------------------- /assets/images/about/searchwp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/searchwp.png -------------------------------------------------------------------------------- /assets/images/about/sugar-calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/sugar-calendar.png -------------------------------------------------------------------------------- /assets/images/about/team.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/team.jpg -------------------------------------------------------------------------------- /assets/images/about/wp-simple-pay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/about/wp-simple-pay.png -------------------------------------------------------------------------------- /assets/images/additional-connections/screenshot-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/additional-connections/screenshot-01.png -------------------------------------------------------------------------------- /assets/images/additional-connections/screenshot-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/additional-connections/screenshot-02.png -------------------------------------------------------------------------------- /assets/images/additional-connections/thumbnail-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/additional-connections/thumbnail-01.png -------------------------------------------------------------------------------- /assets/images/additional-connections/thumbnail-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/additional-connections/thumbnail-02.png -------------------------------------------------------------------------------- /assets/images/dash-widget/error-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/dash-widget/smtp/delivered.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/dash-widget/smtp/sent.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/dash-widget/smtp/total.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/dash-widget/smtp/unsent.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/dash-widget/wp/delivered.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/dash-widget/wp/sent.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/dash-widget/wp/total.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/dash-widget/wp/unsent.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/dash-widget/yes-green.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/email-reports/screenshot-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/email-reports/screenshot-01.png -------------------------------------------------------------------------------- /assets/images/email-reports/screenshot-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/email-reports/screenshot-02.png -------------------------------------------------------------------------------- /assets/images/email-reports/screenshot-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/email-reports/screenshot-03.png -------------------------------------------------------------------------------- /assets/images/email-reports/thumbnail-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/email-reports/thumbnail-01.png -------------------------------------------------------------------------------- /assets/images/email-reports/thumbnail-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/email-reports/thumbnail-02.png -------------------------------------------------------------------------------- /assets/images/email-reports/thumbnail-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/email-reports/thumbnail-03.png -------------------------------------------------------------------------------- /assets/images/email/icon-check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/email/icon-check.png -------------------------------------------------------------------------------- /assets/images/email/signature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/email/signature.png -------------------------------------------------------------------------------- /assets/images/email/wp-mail-smtp-whitelabel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/email/wp-mail-smtp-whitelabel.png -------------------------------------------------------------------------------- /assets/images/email/wp-mail-smtp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/email/wp-mail-smtp.png -------------------------------------------------------------------------------- /assets/images/flyout-menu/facebook.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/flyout-menu/life-ring.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/flyout-menu/lightbulb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/flyout-menu/star.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/font-awesome/arrow-rotate-right-purple.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/images/font-awesome/cancel-red.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/images/font-awesome/check-circle-dark-green.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/images/font-awesome/check-circle-solid-green.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/font-awesome/clock-orange.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/images/font-awesome/exclamation-circle-regular-red.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/font-awesome/exclamation-circle-solid-orange.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/font-awesome/exclamation-circle-solid-red.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/font-awesome/info-circle-blue.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/font-awesome/info-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/images/icons/arrow-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/icons/check-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/icons/dashicons/dashicons-pdf-grey.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/icons/dashicons/dashicons-yes-alt-green.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/icons/error.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/icons/exclamation-circle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/icons/lightbulb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/icons/success.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/icons/warning.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/icons/zoom.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/loaders/loading-blue.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/loaders/loading-white.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/loaders/loading.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/logs/archive-thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/logs/archive-thumbnail.png -------------------------------------------------------------------------------- /assets/images/logs/archive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/logs/archive.png -------------------------------------------------------------------------------- /assets/images/logs/single-thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/logs/single-thumbnail.png -------------------------------------------------------------------------------- /assets/images/logs/single.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/logs/single.png -------------------------------------------------------------------------------- /assets/images/menu-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/pro-badge-small.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/pro-badge.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/providers/aws.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/providers/brevo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/providers/google.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/providers/pepipost-smtp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/providers/pepipost-smtp.png -------------------------------------------------------------------------------- /assets/images/providers/pepipost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/providers/pepipost.png -------------------------------------------------------------------------------- /assets/images/providers/php.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/providers/postmark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/providers/sendgrid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/providers/smtp-com.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/providers/smtp.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/providers/smtp2go.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/providers/sparkpost.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/images/reports/email/icon-arrow-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/reports/email/icon-arrow-down.png -------------------------------------------------------------------------------- /assets/images/reports/email/icon-arrow-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/reports/email/icon-arrow-up.png -------------------------------------------------------------------------------- /assets/images/reports/email/icon-check-gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/reports/email/icon-check-gray.png -------------------------------------------------------------------------------- /assets/images/reports/email/icon-check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/reports/email/icon-check.png -------------------------------------------------------------------------------- /assets/images/reports/email/icon-click.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/reports/email/icon-click.png -------------------------------------------------------------------------------- /assets/images/reports/email/icon-email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/reports/email/icon-email.png -------------------------------------------------------------------------------- /assets/images/reports/email/icon-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/reports/email/icon-error.png -------------------------------------------------------------------------------- /assets/images/reports/email/icon-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/reports/email/icon-open.png -------------------------------------------------------------------------------- /assets/images/reports/email/wp-mail-smtp-logo-dark-whitelabel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/reports/email/wp-mail-smtp-logo-dark-whitelabel.png -------------------------------------------------------------------------------- /assets/images/reports/email/wp-mail-smtp-logo-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/reports/email/wp-mail-smtp-logo-dark.png -------------------------------------------------------------------------------- /assets/images/reports/email/wp-mail-smtp-logo-whitelabel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/reports/email/wp-mail-smtp-logo-whitelabel.png -------------------------------------------------------------------------------- /assets/images/reports/email/wp-mail-smtp-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/reports/email/wp-mail-smtp-logo.png -------------------------------------------------------------------------------- /assets/images/reports/icon-note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/reports/icon-note.png -------------------------------------------------------------------------------- /assets/images/wp-spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/images/wp-spinner.gif -------------------------------------------------------------------------------- /assets/js/connect.min.js: -------------------------------------------------------------------------------- 1 | "use strict";var WPMailSMTPConnect=window.WPMailSMTPConnect||function(n,e){var c={$connectBtn:e("#wp-mail-smtp-setting-upgrade-license-button"),$connectKey:e("#wp-mail-smtp-setting-upgrade-license-key")},o={init:function(){e(o.ready)},ready:function(){o.events()},events:function(){o.connectBtnClick()},connectBtnClick:function(){c.$connectBtn.on("click",function(){o.gotoUpgradeUrl()})},proAlreadyInstalled:function(t){return{title:wp_mail_smtp_connect.text.almost_done,content:t.data.message,icon:'">"+t.status+" "+t.statusText+" "+t.responseText,icon:'">'+o+""),u.find("span.status-label").removeClass("status-active status-inactive status-download").addClass(n).removeClass("button button-primary button-secondary disabled").text(l),i.removeClass("status-active status-inactive status-download").removeClass("button button-primary button-secondary disabled").addClass(n).html(e)):(t=!1,a.hasOwnProperty("data")&&a.data.hasOwnProperty(0)&&a.data[0].hasOwnProperty("code")?u.find(".actions").append('
'+wp_mail_smtp_about.plugin_install_error+"
"):u.find(".actions").append('
'+a.data+"
"),i.html(wp_mail_smtp_about.plugin_download_btn)),t||i.removeClass("disabled"),i.removeClass("loading"),setTimeout(function(){d(".plugin-item .msg").remove()},3e3)}).fail(function(a){console.log(a.responseText)})})}};return i}(document,window,jQuery),WPMailSMTP.Admin.About.init(); -------------------------------------------------------------------------------- /assets/js/smtp-admin-notices.js: -------------------------------------------------------------------------------- 1 | /* global wp_mail_smtp_admin_notices, ajaxurl */ 2 | 3 | /** 4 | * WP Mail SMTP Admin Notices. 5 | * 6 | * @since 4.4.0 7 | */ 8 | 9 | 'use strict'; 10 | 11 | var WPMailSMTPAdminNotices = window.WPMailSMTPAdminNotices || ( function( document, window, $ ) { 12 | 13 | /** 14 | * Public functions and properties. 15 | * 16 | * @since 4.4.0 17 | * 18 | * @type {object} 19 | */ 20 | var app = { 21 | 22 | /** 23 | * Start the engine. 24 | * 25 | * @since 4.4.0 26 | */ 27 | init: function() { 28 | 29 | $( app.ready ); 30 | }, 31 | 32 | /** 33 | * Document ready. 34 | * 35 | * @since 4.4.0 36 | */ 37 | ready: function() { 38 | 39 | app.events(); 40 | }, 41 | 42 | /** 43 | * Register JS events. 44 | * 45 | * @since 4.4.0 46 | */ 47 | events: function() { 48 | 49 | $( '.wp-mail-smtp-notice.is-dismissible' ) 50 | .on( 'click', '.notice-dismiss', app.dismiss ); 51 | }, 52 | 53 | /** 54 | * Click on the dismiss notice button. 55 | * 56 | * @since 4.4.0 57 | * 58 | * @param {object} event Event object. 59 | */ 60 | dismiss: function( event ) { 61 | 62 | var $notice = $( this ).closest( '.wp-mail-smtp-notice' ); 63 | 64 | // If notice key is not defined, we can't dismiss it permanently. 65 | if ( $notice.data( 'notice' ) === undefined ) { 66 | return; 67 | } 68 | 69 | var $button = $( this ); 70 | 71 | $.ajax( { 72 | url: ajaxurl, 73 | dataType: 'json', 74 | type: 'POST', 75 | data: { 76 | action: 'wp_mail_smtp_ajax', 77 | nonce: wp_mail_smtp_admin_notices.nonce, 78 | task: 'notice_dismiss', 79 | notice: $notice.data( 'notice' ), 80 | }, 81 | beforeSend: function() { 82 | $button.prop( 'disabled', true ); 83 | }, 84 | } ); 85 | }, 86 | }; 87 | 88 | return app; 89 | 90 | }( document, window, jQuery ) ); 91 | 92 | // Initialize. 93 | WPMailSMTPAdminNotices.init(); 94 | -------------------------------------------------------------------------------- /assets/js/smtp-admin-notices.min.js: -------------------------------------------------------------------------------- 1 | "use strict";var WPMailSMTPAdminNotices=window.WPMailSMTPAdminNotices||function(s){var i={init:function(){s(i.ready)},ready:function(){i.events()},events:function(){s(".wp-mail-smtp-notice.is-dismissible").on("click",".notice-dismiss",i.dismiss)},dismiss:function(i){var n,t=s(this).closest(".wp-mail-smtp-notice");void 0!==t.data("notice")&&(n=s(this),s.ajax({url:ajaxurl,dataType:"json",type:"POST",data:{action:"wp_mail_smtp_ajax",nonce:wp_mail_smtp_admin_notices.nonce,task:"notice_dismiss",notice:t.data("notice")},beforeSend:function(){n.prop("disabled",!0)}}))}};return i}((document,window,jQuery));WPMailSMTPAdminNotices.init(); -------------------------------------------------------------------------------- /assets/js/smtp-notifications.min.js: -------------------------------------------------------------------------------- 1 | "use strict";var WPMailSMTPAdminNotifications=window.WPMailSMTPAdminNotifications||function(t){var a={$notifications:t("#wp-mail-smtp-notifications"),$nextButton:t("#wp-mail-smtp-notifications .navigation .next"),$prevButton:t("#wp-mail-smtp-notifications .navigation .prev"),$adminBarCounter:t("#wp-admin-bar-wp-mail-smtp-menu .wp-mail-smtp-admin-bar-menu-notification-counter")},i={init:function(){t(i.ready)},ready:function(){i.updateNavigation(),i.events()},events:function(){a.$notifications.on("click",".dismiss",i.dismiss).on("click",".next",i.navNext).on("click",".prev",i.navPrev)},dismiss:function(e){var n;0!==a.$currentMessage.length&&(n={action:"wp_mail_smtp_notification_dismiss",nonce:wp_mail_smtp.nonce,id:a.$currentMessage.data("message-id")},t.post(ajaxurl,n,function(e){e.success&&(1<(e=parseInt(a.$adminBarCounter.text(),10))?a.$adminBarCounter.html(""+--e+""):a.$adminBarCounter.remove(),0===(e=a.$nextMessage.length<1?a.$prevMessage:a.$nextMessage).length?a.$notifications.remove():(a.$currentMessage.remove(),e.addClass("current"),i.updateNavigation()))}))},navNext:function(e){a.$nextButton.hasClass("disabled")||(a.$currentMessage.removeClass("current"),a.$nextMessage.addClass("current"),i.updateNavigation())},navPrev:function(e){a.$prevButton.hasClass("disabled")||(a.$currentMessage.removeClass("current"),a.$prevMessage.addClass("current"),i.updateNavigation())},updateNavigation:function(){a.$currentMessage=a.$notifications.find(".wp-mail-smtp-notifications-message.current"),a.$nextMessage=a.$currentMessage.next(".wp-mail-smtp-notifications-message"),a.$prevMessage=a.$currentMessage.prev(".wp-mail-smtp-notifications-message"),0===a.$nextMessage.length?a.$nextButton.addClass("disabled"):a.$nextButton.removeClass("disabled"),0===a.$prevMessage.length?a.$prevButton.addClass("disabled"):a.$prevButton.removeClass("disabled")}};return i}((document,window,jQuery));WPMailSMTPAdminNotifications.init(); -------------------------------------------------------------------------------- /assets/js/vendor/chartjs-adapter-moment.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * chartjs-adapter-moment v1.0.1 3 | * https://www.chartjs.org 4 | * (c) 2022 chartjs-adapter-moment Contributors 5 | * Released under the MIT license 6 | * 7 | * NOTE: This file was modified. Chart object was renamed to WPMailSMTPChart, to prevent JS library conflicts with other plugins. 8 | * "Chart" was replaced with "WPMailSMTPChart" 1 time in this file. 9 | */ 10 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("moment"),require("chart.js")):"function"==typeof define&&define.amd?define(["moment","chart.js"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).moment,e.WPMailSMTPChart)}(this,(function(e,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var f=n(e);const a={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};t._adapters._date.override("function"==typeof f.default?{_id:"moment",formats:function(){return a},parse:function(e,t){return"string"==typeof e&&"string"==typeof t?e=f.default(e,t):e instanceof f.default||(e=f.default(e)),e.isValid()?e.valueOf():null},format:function(e,t){return f.default(e).format(t)},add:function(e,t,n){return f.default(e).add(t,n).valueOf()},diff:function(e,t,n){return f.default(e).diff(f.default(t),n)},startOf:function(e,t,n){return e=f.default(e),"isoWeek"===t?(n=Math.trunc(Math.min(Math.max(0,n),6)),e.isoWeekday(n).startOf("day").valueOf()):e.startOf(t).valueOf()},endOf:function(e,t){return f.default(e).endOf(t).valueOf()}}:{})})); -------------------------------------------------------------------------------- /assets/vue/img/arrow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/brevo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/vue/img/check-circle-solid-white.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/check-circle-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/check-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/chevron-down-solid-grey.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/copy-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/elasticemail.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/exclamation-circle-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/gmail-sign-in-btn.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /assets/vue/img/gmail.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/info-circle-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/loading-blue.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/loading-white.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/loading.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/lock-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/long-arrow-alt-left-regular-grey.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/long-arrow-alt-left-regular.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/long-arrow-alt-right-regular-white.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/long-arrow-alt-right-regular.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/mailersend.svg: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | -------------------------------------------------------------------------------- /assets/vue/img/mailgun.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/mailjet.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/outlook-sign-in-btn.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /assets/vue/img/outlook.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/postmark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/pro-badge.svg: -------------------------------------------------------------------------------- 1 | PRO -------------------------------------------------------------------------------- /assets/vue/img/question-circle-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/sendgrid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/sendlayer.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/vue/img/smtp.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/smtp2go.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/smtpcom.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/sparkpost.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/star-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/thumbs-down-hover.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/thumbs-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/thumbs-up-hover.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/thumbs-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/times-solid-grey.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/vue/img/times-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/wporg/banner-1544x500.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/banner-1544x500.png -------------------------------------------------------------------------------- /assets/wporg/banner-772x250.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/banner-772x250.png -------------------------------------------------------------------------------- /assets/wporg/icon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/icon-128x128.png -------------------------------------------------------------------------------- /assets/wporg/icon-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/icon-256x256.png -------------------------------------------------------------------------------- /assets/wporg/screenshot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/screenshot-1.png -------------------------------------------------------------------------------- /assets/wporg/screenshot-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/screenshot-10.png -------------------------------------------------------------------------------- /assets/wporg/screenshot-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/screenshot-11.png -------------------------------------------------------------------------------- /assets/wporg/screenshot-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/screenshot-12.png -------------------------------------------------------------------------------- /assets/wporg/screenshot-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/screenshot-13.png -------------------------------------------------------------------------------- /assets/wporg/screenshot-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/screenshot-14.png -------------------------------------------------------------------------------- /assets/wporg/screenshot-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/screenshot-15.png -------------------------------------------------------------------------------- /assets/wporg/screenshot-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/screenshot-16.png -------------------------------------------------------------------------------- /assets/wporg/screenshot-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/screenshot-2.png -------------------------------------------------------------------------------- /assets/wporg/screenshot-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/screenshot-3.png -------------------------------------------------------------------------------- /assets/wporg/screenshot-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/screenshot-4.png -------------------------------------------------------------------------------- /assets/wporg/screenshot-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/screenshot-5.png -------------------------------------------------------------------------------- /assets/wporg/screenshot-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/screenshot-6.png -------------------------------------------------------------------------------- /assets/wporg/screenshot-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/screenshot-7.png -------------------------------------------------------------------------------- /assets/wporg/screenshot-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/screenshot-8.png -------------------------------------------------------------------------------- /assets/wporg/screenshot-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/awesomemotive/WP-Mail-SMTP/d4baca4dee74e605fbc67825dda0c913ac2c3e9e/assets/wporg/screenshot-9.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wp-mail-smtp", 3 | "version": "4.5.0", 4 | "description": "Make email delivery easy for WordPress. Connect with SMTP, Gmail, Outlook, SendGrid, Mailgun, Zoho, SES, and more.", 5 | "private": true, 6 | "repository": { 7 | "type": "git", 8 | "url": "git+https://github.com/awesomemotive/wp-mail-smtp.git" 9 | }, 10 | "license": "GPL-2.0+", 11 | "bugs": { 12 | "url": "https://github.com/awesomemotive/wp-mail-smtp/issues" 13 | }, 14 | "homepage": "https://wpmailsmtp.com", 15 | "devDependencies": { 16 | "babel-eslint": "^10.0.3", 17 | "cross-env": "^7.0.0", 18 | "eslint": "^6.8.0", 19 | "eslint-config-wordpress": "^2.0.0", 20 | "eslint-plugin-jsdoc": "^22.1.0", 21 | "eslint-plugin-vue": "^6.2.2", 22 | "vue-eslint-parser": "^7.11.0", 23 | "gulp": "^4.0.2", 24 | "gulp-cached": "^1.1.1", 25 | "gulp-clean": "^0.4.0", 26 | "gulp-debug": "^5.0.1", 27 | "gulp-imagemin": "^9.0.0", 28 | "gulp-include": "^2.4.1", 29 | "gulp-rename": "^1.4.0", 30 | "gulp-replace": "^1.1.4", 31 | "gulp-sass": "^5.1.0", 32 | "gulp-sourcemaps": "^2.6.5", 33 | "gulp-uglify": "^3.0.2", 34 | "gulp-watch": "^5.0.1", 35 | "gulp-zip": "^4.2.0", 36 | "husky": "^9.0.11", 37 | "lint-diff": "file:.packages/npm/lint-diff", 38 | "lodash": "^4.17.21", 39 | "merge-stream": "^2.0.0", 40 | "npm-run-all": "^4.1.5", 41 | "sass": "^1.69.6", 42 | "trim-newlines": "^5.0.0", 43 | "y18n": "^5.0.8", 44 | "yargs": "^17.7.2", 45 | "yargs-parser": "^13.1.2" 46 | }, 47 | "engines": { 48 | "node": ">=18.19.0 <20.0.0", 49 | "npm": ">=10.2.3" 50 | }, 51 | "scripts": { 52 | "gulp": "node ./node_modules/gulp/bin/gulp.js", 53 | "lint-diff": "cross-env node node_modules/lint-diff/dist/lint-diff.js", 54 | "phpcs-diff": "cross-env php vendor/bin/phpcs-diff", 55 | "cs": "run-s --silent --continue-on-error lint-diff phpcs-diff" 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /php-scoper/check-build-php-version.php: -------------------------------------------------------------------------------- 1 | =' ) && version_compare( phpversion(), '7.4', '<=' ) ) { 5 | echo 'Your PHP version is not correct (' . phpversion() . ')! Please use PHP 7.4 for executing this composer script.' . PHP_EOL; 6 | 7 | exit( 1 ); 8 | } 9 | -------------------------------------------------------------------------------- /php-scoper/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "require": { 3 | "humbug/php-scoper": "^0.14.1" 4 | }, 5 | "minimum-stability": "dev", 6 | "prefer-stable": true, 7 | "config": { 8 | "preferred-install": "dist", 9 | "sort-packages": true 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/AbstractConnection.php: -------------------------------------------------------------------------------- 1 | get_name(), 26 | wp_mail_smtp()->get_providers()->get_options( $this->get_mailer_slug(), $this )->get_title() 27 | ); 28 | } 29 | 30 | /** 31 | * Get connection mailer slug. 32 | * 33 | * @since 3.7.0 34 | * 35 | * @return string 36 | */ 37 | public function get_mailer_slug() { 38 | 39 | return $this->get_options()->get( 'mail', 'mailer' ); 40 | } 41 | 42 | /** 43 | * Get connection mailer object. 44 | * 45 | * @since 3.7.0 46 | * 47 | * @return MailerAbstract 48 | */ 49 | public function get_mailer() { 50 | 51 | $phpmailer = wp_mail_smtp()->get_processor()->get_phpmailer(); 52 | 53 | return wp_mail_smtp()->get_providers()->get_mailer( $this->get_mailer_slug(), $phpmailer, $this ); 54 | } 55 | 56 | /** 57 | * Whether the connection is primary or not. 58 | * 59 | * @since 3.7.0 60 | * 61 | * @return bool 62 | */ 63 | public function is_primary() { 64 | 65 | return false; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/Admin/DebugEvents/Migration.php: -------------------------------------------------------------------------------- 1 | get_charset_collate(); 46 | 47 | $sql = "CREATE TABLE IF NOT EXISTS `$table` ( 48 | `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, 49 | `content` TEXT DEFAULT NULL, 50 | `initiator` TEXT DEFAULT NULL, 51 | `event_type` TINYINT UNSIGNED NOT NULL DEFAULT '0', 52 | `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 53 | PRIMARY KEY (id) 54 | ) 55 | ENGINE='InnoDB' 56 | {$charset_collate};"; 57 | 58 | $result = $wpdb->query( $sql ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared 59 | 60 | if ( ! empty( $wpdb->last_error ) ) { 61 | update_option( self::ERROR_OPTION_NAME, $wpdb->last_error, false ); 62 | } 63 | 64 | // Save the current version to DB. 65 | if ( $result !== false ) { 66 | $this->update_db_ver( 1 ); 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/Admin/PageInterface.php: -------------------------------------------------------------------------------- 1 | get_tab_label( $tab ); 48 | } 49 | 50 | return esc_html__( 'About Us', 'wp-mail-smtp' ); 51 | } 52 | 53 | /** 54 | * Title of a page. 55 | * 56 | * @since 1.5.0 57 | * 58 | * @return string 59 | */ 60 | public function get_title() { 61 | 62 | return $this->get_label(); 63 | } 64 | 65 | /** 66 | * Active the given plugin. 67 | * 68 | * @deprecated 2.9.0 69 | * 70 | * @since 1.5.0 71 | */ 72 | public static function ajax_plugin_activate() { 73 | 74 | _deprecated_function( __METHOD__, '2.9.0', '\WPMailSMTP\Admin\Pages\AboutTab::ajax_plugin_activate' ); 75 | 76 | AboutTab::ajax_plugin_activate(); 77 | } 78 | 79 | /** 80 | * Install & activate the given plugin. 81 | * 82 | * @deprecated 2.9.0 83 | * 84 | * @since 1.5.0 85 | */ 86 | public static function ajax_plugin_install() { 87 | 88 | _deprecated_function( __METHOD__, '2.9.0', '\WPMailSMTP\Admin\Pages\AboutTab::ajax_plugin_install' ); 89 | 90 | AboutTab::ajax_plugin_install(); 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /src/Admin/Pages/AuthTab.php: -------------------------------------------------------------------------------- 1 | get_connections_manager()->get_primary_connection(); 28 | 29 | /** 30 | * Filters auth connection object. 31 | * 32 | * @since 3.7.0 33 | * 34 | * @param ConnectionInterface $connection The Connection object. 35 | */ 36 | $connection = apply_filters( 'wp_mail_smtp_admin_pages_auth_tab_process_auth_connection', $connection ); 37 | 38 | $auth = wp_mail_smtp()->get_providers()->get_auth( $connection->get_mailer_slug(), $connection ); 39 | 40 | if ( 41 | $auth && 42 | $auth instanceof AuthAbstract && 43 | method_exists( $auth, 'process' ) 44 | ) { 45 | $auth->process(); 46 | } 47 | } 48 | 49 | /** 50 | * Return nothing, as we don't need this functionality. 51 | * 52 | * @since 1.0.0 53 | */ 54 | public function get_label() { 55 | return ''; 56 | } 57 | 58 | /** 59 | * Return nothing, as we don't need this functionality. 60 | * 61 | * @since 1.0.0 62 | */ 63 | public function get_title() { 64 | return ''; 65 | } 66 | 67 | /** 68 | * Do nothing, as we don't need this functionality. 69 | * 70 | * @since 1.0.0 71 | */ 72 | public function display() { 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /src/Admin/Pages/EmailReports.php: -------------------------------------------------------------------------------- 1 | get_label(); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/Admin/Pages/Logs.php: -------------------------------------------------------------------------------- 1 | slug, 36 | WP::admin_url( 'admin.php?page=' . Area::SLUG ) 37 | ); 38 | } 39 | 40 | /** 41 | * Link label of a tab. 42 | * 43 | * @since 1.5.0 44 | * 45 | * @return string 46 | */ 47 | public function get_label() { 48 | return esc_html__( 'Email Log', 'wp-mail-smtp' ); 49 | } 50 | 51 | /** 52 | * Title of a tab. 53 | * 54 | * @since 1.5.0 55 | * 56 | * @return string 57 | */ 58 | public function get_title() { 59 | return $this->get_label(); 60 | } 61 | 62 | /** 63 | * Tab content. 64 | * 65 | * @since 2.1.0 Moved the display content to the email log settings tab. 66 | */ 67 | public function display() {} 68 | } 69 | -------------------------------------------------------------------------------- /src/Admin/Pages/Tools.php: -------------------------------------------------------------------------------- 1 | get_label(); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/Admin/PluginsInstallSkin.php: -------------------------------------------------------------------------------- 1 | setup_compatibility(); 32 | } 33 | 34 | /** 35 | * Setup compatibility plugins. 36 | * 37 | * @since 2.8.0 38 | */ 39 | public function setup_compatibility() { 40 | 41 | $plugins = [ 42 | 'admin-2020' => '\WPMailSMTP\Compatibility\Plugin\Admin2020', 43 | 'wpforms-lite' => '\WPMailSMTP\Compatibility\Plugin\WPFormsLite', 44 | 'wpforms' => '\WPMailSMTP\Compatibility\Plugin\WPForms', 45 | 'woocommerce' => '\WPMailSMTP\Compatibility\Plugin\WooCommerce', 46 | ]; 47 | 48 | foreach ( $plugins as $key => $classname ) { 49 | if ( class_exists( $classname ) && is_callable( [ $classname, 'is_applicable' ] ) ) { 50 | if ( $classname::is_applicable() ) { 51 | $this->plugins[ $key ] = new $classname(); 52 | } 53 | } 54 | } 55 | } 56 | 57 | /** 58 | * Get compatibility plugin. 59 | * 60 | * @since 2.8.0 61 | * 62 | * @param string $key Plugin key. 63 | * 64 | * @return \WPMailSMTP\Compatibility\Plugin\PluginAbstract | false 65 | */ 66 | public function get_plugin( $key ) { 67 | 68 | return isset( $this->plugins[ $key ] ) ? $this->plugins[ $key ] : false; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/Compatibility/Plugin/Admin2020.php: -------------------------------------------------------------------------------- 1 | after_plugins_loaded(); 28 | } 29 | 30 | /** 31 | * Is plugin can be loaded. 32 | * 33 | * @since 2.8.0 34 | * 35 | * @return bool 36 | */ 37 | public static function is_applicable() { 38 | 39 | return static::is_activated(); 40 | } 41 | 42 | /** 43 | * Is plugin activated. 44 | * 45 | * @since 2.8.0 46 | * 47 | * @return bool 48 | */ 49 | public static function is_activated() { 50 | 51 | return WP::is_plugin_activated( static::get_path() ); 52 | } 53 | 54 | /** 55 | * Execute after plugins loaded. 56 | * 57 | * @since 2.8.0 58 | */ 59 | public function after_plugins_loaded() { 60 | } 61 | 62 | /** 63 | * Execute on init action in admin area. 64 | * 65 | * @since 2.8.0 66 | */ 67 | public function load_admin() { 68 | } 69 | 70 | /** 71 | * Execute on init action. 72 | * 73 | * @since 2.8.0 74 | */ 75 | public function load() { 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /src/Compatibility/Plugin/PluginInterface.php: -------------------------------------------------------------------------------- 1 | get_queue()->is_enabled() ) { 44 | add_filter( 'wpforms_tasks_entry_emails_trigger_send_same_process', '__return_true', PHP_INT_MAX ); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/Compatibility/Plugin/WooCommerce.php: -------------------------------------------------------------------------------- 1 | get_queue()->is_enabled() ) { 44 | add_filter( 'woocommerce_defer_transactional_emails', '__return_false', PHP_INT_MAX ); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/Connection.php: -------------------------------------------------------------------------------- 1 | options = Options::init(); 29 | } 30 | 31 | /** 32 | * Get the connection identifier. 33 | * 34 | * @since 3.7.0 35 | * 36 | * @return string 37 | */ 38 | public function get_id() { 39 | 40 | return 'primary'; 41 | } 42 | 43 | /** 44 | * Get the connection name. 45 | * 46 | * @since 3.7.0 47 | * 48 | * @return string 49 | */ 50 | public function get_name() { 51 | 52 | return esc_html__( 'Primary', 'wp-mail-smtp' ); 53 | } 54 | 55 | /** 56 | * Get connection options object. 57 | * 58 | * @since 3.7.0 59 | * 60 | * @return Options 61 | */ 62 | public function get_options() { 63 | 64 | return $this->options; 65 | } 66 | 67 | /** 68 | * Whether the connection is primary or not. 69 | * 70 | * @since 3.7.0 71 | * 72 | * @return bool 73 | */ 74 | public function is_primary() { 75 | 76 | return true; 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /src/ConnectionInterface.php: -------------------------------------------------------------------------------- 1 | get_primary_connection(); 31 | } 32 | 33 | /** 34 | * Get the primary connection object. 35 | * 36 | * @since 3.7.0 37 | * 38 | * @return ConnectionInterface 39 | */ 40 | public function get_primary_connection() { 41 | 42 | if ( is_null( $this->primary_connection ) ) { 43 | $this->primary_connection = new Connection(); 44 | } 45 | 46 | return $this->primary_connection; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/Helpers/DB.php: -------------------------------------------------------------------------------- 1 | prepare( 27 | 'SELECT COUNT(1) IndexIsThere 28 | FROM INFORMATION_SCHEMA.STATISTICS 29 | WHERE table_schema = DATABASE() 30 | AND table_name = %s 31 | AND index_name = %s', 32 | $table, 33 | $index 34 | ); 35 | 36 | // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared 37 | $result = $wpdb->get_var( $query ); 38 | 39 | return $result === '1'; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/MailCatcher.php: -------------------------------------------------------------------------------- 1 | CustomHeader; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase 46 | } 47 | 48 | /** 49 | * Get the PHPMailer line ending. 50 | * 51 | * @since 2.2.0 52 | * 53 | * @return string 54 | */ 55 | public function get_line_ending() { 56 | 57 | return $this->LE; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase 58 | } 59 | 60 | /** 61 | * Throw PHPMailer exception. 62 | * 63 | * @since 4.0.0 64 | * 65 | * @param string $error Error message. 66 | * 67 | * @throws phpmailerException PHPMailer exception. 68 | */ 69 | protected function throw_exception( $error ) { 70 | 71 | throw new phpmailerException( $error ); 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/MailCatcherInterface.php: -------------------------------------------------------------------------------- 1 | get( 'general', self::SETTINGS_SLUG ); 56 | 57 | return (bool) $value; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/Providers/AmazonSES/Options.php: -------------------------------------------------------------------------------- 1 | wp_mail_smtp()->assets_url . '/images/providers/aws.svg', 24 | 'slug' => 'amazonses', 25 | 'title' => esc_html__( 'Amazon SES', 'wp-mail-smtp' ), 26 | 'disabled' => true, 27 | ) 28 | ); 29 | } 30 | 31 | /** 32 | * @inheritdoc 33 | */ 34 | public function display_options() { 35 | 36 | ?> 37 |
38 |

39 | 40 |

41 |
42 | Server:'; 23 | 24 | $disabled_functions = ini_get( 'disable_functions' ); 25 | $disabled = (array) explode( ',', trim( $disabled_functions ) ); 26 | 27 | $mail_text[] = 'PHP.mail(): ' . ( in_array( 'mail', $disabled, true ) || ! function_exists( 'mail' ) ? 'No' : 'Yes' ); 28 | if ( function_exists( 'apache_get_modules' ) ) { 29 | $modules = apache_get_modules(); 30 | $mail_text[] = 'Apache.mod_security: ' . ( in_array( 'mod_security', $modules, true ) || in_array( 'mod_security2', $modules, true ) ? 'Yes' : 'No' ); 31 | } 32 | if ( function_exists( 'selinux_is_enabled' ) ) { 33 | $mail_text[] = 'OS.SELinux: ' . ( selinux_is_enabled() ? 'Yes' : 'No' ); 34 | } 35 | if ( function_exists( 'grsecurity_is_enabled' ) ) { 36 | $mail_text[] = 'OS.grsecurity: ' . ( grsecurity_is_enabled() ? 'Yes' : 'No' ); 37 | } 38 | 39 | return implode( '
', $mail_text ); 40 | } 41 | 42 | /** 43 | * @inheritdoc 44 | */ 45 | public function is_mailer_complete() { 46 | 47 | return true; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/Providers/Mail/Options.php: -------------------------------------------------------------------------------- 1 | wp_mail_smtp()->assets_url . '/images/providers/php.svg', 25 | 'slug' => 'mail', 26 | 'title' => esc_html__( 'Default (none)', 'wp-mail-smtp' ), 27 | ) 28 | ); 29 | } 30 | 31 | /** 32 | * @inheritdoc 33 | */ 34 | public function display_options() { 35 | ?> 36 | 37 |
38 | Default (none) mailer selected, which won\'t improve email deliverability. Please select any other email provider and use the easy Setup Wizard to configure it.', 'wp-mail-smtp' ), 42 | [ 43 | 'strong' => [], 44 | 'a' => [ 45 | 'href' => [], 46 | 'rel' => [], 47 | 'target' => [], 48 | ], 49 | ] 50 | ), 51 | esc_url( wp_mail_smtp()->get_utm_url( 'https://wpmailsmtp.com/docs/a-complete-guide-to-wp-mail-smtp-mailers/', 'Default mailer - any other email provider' ) ), 52 | esc_url( SetupWizard::get_site_url() ) 53 | ); 54 | ?> 55 |
56 | 57 | wp_mail_smtp()->assets_url . '/images/providers/microsoft.svg', 24 | 'slug' => 'outlook', 25 | 'title' => esc_html__( '365 / Outlook', 'wp-mail-smtp' ), 26 | 'disabled' => true, 27 | ) 28 | ); 29 | } 30 | 31 | /** 32 | * @inheritdoc 33 | */ 34 | public function display_options() { 35 | 36 | ?> 37 |
38 |

39 | 40 |

41 |
42 | options->get_group( $this->mailer ); 21 | 22 | // Host and Port are the only really required options. 23 | if ( 24 | ! empty( $options['host'] ) && 25 | ! empty( $options['port'] ) 26 | ) { 27 | return true; 28 | } 29 | 30 | return false; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Providers/Pepipost/Options.php: -------------------------------------------------------------------------------- 1 | wp_mail_smtp()->assets_url . '/images/providers/pepipost-smtp.png', 24 | 'slug' => 'pepipost', 25 | 'title' => esc_html__( 'Pepipost SMTP', 'wp-mail-smtp' ), 26 | ) 27 | ); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/Providers/SMTP/Mailer.php: -------------------------------------------------------------------------------- 1 | connection_options->get_group( $this->mailer ); 21 | 22 | // Host and Port are the only really required options. 23 | if ( 24 | ! empty( $options['host'] ) && 25 | ! empty( $options['port'] ) 26 | ) { 27 | return true; 28 | } 29 | 30 | return false; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Providers/SMTP/Options.php: -------------------------------------------------------------------------------- 1 | wp_mail_smtp()->assets_url . '/images/providers/smtp.svg', 27 | 'slug' => 'smtp', 28 | 'title' => esc_html__( 'Other SMTP', 'wp-mail-smtp' ), 29 | 'description' => sprintf( 30 | wp_kses( 31 | /* translators: %s - URL to SMTP documentation. */ 32 | __( 'The Other SMTP option lets you send emails through an SMTP server instead of using a provider\'s API. This is easy and convenient, but it\'s less secure than the other mailers. Please note that your provider may not allow you to send a large number of emails. In that case, please use a different mailer.

To get started, read our Other SMTP documentation.', 'wp-mail-smtp' ), 33 | [ 34 | 'br' => [], 35 | 'a' => [ 36 | 'href' => [], 37 | 'rel' => [], 38 | 'target' => [], 39 | ], 40 | ] 41 | ), 42 | esc_url( wp_mail_smtp()->get_utm_url( 'https://wpmailsmtp.com/docs/how-to-set-up-the-other-smtp-mailer-in-wp-mail-smtp/', 'Other SMTP documentation' ) ) 43 | ), 44 | ], 45 | $connection 46 | ); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/Providers/Sendinblue/Api.php: -------------------------------------------------------------------------------- 1 | connection = $connection; 43 | } else { 44 | $this->connection = wp_mail_smtp()->get_connections_manager()->get_primary_connection(); 45 | } 46 | 47 | $this->options = $this->connection->get_options()->get_group( Options::SLUG ); 48 | } 49 | 50 | /** 51 | * Configure API key authorization: api-key. 52 | * 53 | * @since 1.6.0 54 | * @deprecated 3.9.0 We are no longer using the Sendinblue SDK. 55 | * 56 | * @return null 57 | */ 58 | protected function get_api_config() { 59 | 60 | _deprecated_function( __METHOD__, '3.9.0' ); 61 | 62 | return null; 63 | } 64 | 65 | /** 66 | * Get the mailer client instance for Account API. 67 | * 68 | * @since 1.6.0 69 | * @deprecated 3.9.0 We are no longer using the Sendinblue SDK. 70 | */ 71 | public function get_account_client() { 72 | 73 | _deprecated_function( __METHOD__, '3.9.0' ); 74 | 75 | return null; 76 | } 77 | 78 | /** 79 | * Get the mailer client instance for Sender API. 80 | * 81 | * @since 1.6.0 82 | * @deprecated 3.9.0 We are no longer using the Sendinblue SDK. 83 | */ 84 | public function get_sender_client() { 85 | 86 | _deprecated_function( __METHOD__, '3.9.0' ); 87 | 88 | return null; 89 | } 90 | 91 | /** 92 | * Get the mailer client instance for SMTP API. 93 | * 94 | * @since 1.6.0 95 | * @deprecated 3.9.0 We are no longer using the Sendinblue SDK. 96 | */ 97 | public function get_smtp_client() { 98 | 99 | _deprecated_function( __METHOD__, '3.9.0' ); 100 | 101 | return null; 102 | } 103 | 104 | /** 105 | * Whether the mailer is ready to be used in API calls. 106 | * 107 | * @since 1.6.0 108 | * 109 | * @return bool 110 | */ 111 | public function is_ready() { 112 | 113 | return ! empty( $this->options['api_key'] ); 114 | } 115 | } 116 | -------------------------------------------------------------------------------- /src/Providers/Zoho/Options.php: -------------------------------------------------------------------------------- 1 | wp_mail_smtp()->assets_url . '/images/providers/zoho.svg', 24 | 'slug' => 'zoho', 25 | 'title' => esc_html__( 'Zoho Mail', 'wp-mail-smtp' ), 26 | 'disabled' => true, 27 | ) 28 | ); 29 | } 30 | 31 | /** 32 | * {@inheritdoc} 33 | * 34 | * @since 2.3.0 35 | */ 36 | public function display_options() { 37 | 38 | ?> 39 |
40 |

41 | 42 |

43 |
44 | get_queue()->is_enabled(); 45 | } 46 | 47 | /** 48 | * Initial migration - create the table structure. 49 | * 50 | * @since 4.0.0 51 | */ 52 | protected function migrate_to_1() { 53 | 54 | global $wpdb; 55 | 56 | $table = Queue::get_table_name(); 57 | $collate = ! empty( $wpdb->collate ) ? "COLLATE='{$wpdb->collate}'" : ''; 58 | 59 | /* 60 | * Create the table. 61 | */ 62 | $sql = " 63 | CREATE TABLE `$table` ( 64 | `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, 65 | `data` LONGTEXT NULL, 66 | `status` TINYINT UNSIGNED NOT NULL DEFAULT '0', 67 | `date_enqueued` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 68 | `date_processed` TIMESTAMP NULL, 69 | PRIMARY KEY (id), 70 | INDEX status (status), 71 | INDEX date_processed (date_processed) 72 | ) 73 | ENGINE='InnoDB' 74 | {$collate};"; 75 | 76 | $result = $wpdb->query( $sql ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching 77 | 78 | if ( ! empty( $wpdb->last_error ) ) { 79 | update_option( self::ERROR_OPTION_NAME, $wpdb->last_error, false ); 80 | } 81 | 82 | // Save the current version to DB. 83 | if ( $result !== false ) { 84 | $this->update_db_ver( 1 ); 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /src/Tasks/NotificationsUpdateTask.php: -------------------------------------------------------------------------------- 1 | get_notifications()->is_enabled() || 45 | Tasks::is_scheduled( self::ACTION ) !== false 46 | ) { 47 | return; 48 | } 49 | 50 | // Schedule the task. 51 | $this->recurring( 52 | strtotime( '+1 minute' ), 53 | wp_mail_smtp()->get_notifications()->get_notification_update_task_interval() 54 | ) 55 | ->unique() 56 | ->params() 57 | ->register(); 58 | } 59 | 60 | /** 61 | * Update the notification feed. 62 | * 63 | * @since 4.3.0 64 | */ 65 | public function process() { 66 | 67 | // Delete task duplicates. 68 | try { 69 | $this->remove_pending( 1000 ); 70 | } catch ( Exception $e ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch 71 | // Do nothing. 72 | } 73 | 74 | wp_mail_smtp()->get_notifications()->update(); 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /src/Tasks/Queue/CleanupQueueTask.php: -------------------------------------------------------------------------------- 1 | get_queue()->is_enabled() || 48 | Tasks::is_scheduled( self::ACTION ) !== false 49 | ) { 50 | return; 51 | } 52 | 53 | // Schedule the task. 54 | $this->recurring( strtotime( 'now' ), DAY_IN_SECONDS ) 55 | ->unique() 56 | ->register(); 57 | } 58 | 59 | /** 60 | * Perform email sending. 61 | * 62 | * @since 4.0.0 63 | */ 64 | public function process() { 65 | 66 | $queue = wp_mail_smtp()->get_queue(); 67 | $attachments = new Attachments(); 68 | 69 | // Cleanup processed emails. 70 | $queue->cleanup(); 71 | 72 | // Cleanup older-than-a-month attachments. 73 | $attachments->delete_attachments( null, new DateTime( '1 month ago', new DateTimeZone( 'UTC' ) ) ); 74 | 75 | if ( ! $queue->is_enabled() ) { 76 | // If the query has been disabled in the meanwhile, 77 | // and there aren't any emails left, 78 | // cancel the cleanup task. 79 | $queued_emails_count = $queue->count_queued_emails(); 80 | $processed_emails_count = $queue->count_processed_emails(); 81 | 82 | if ( $queued_emails_count === 0 && $processed_emails_count === 0 ) { 83 | // Cleanup any remaining, older-than-an-hour attachments. 84 | $attachments->delete_attachments( null, new DateTime( '1 hour ago', new DateTimeZone( 'UTC' ) ) ); 85 | 86 | $this->cancel_force(); 87 | } 88 | } 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /src/Tasks/Queue/ProcessQueueTask.php: -------------------------------------------------------------------------------- 1 | get_queue()->is_enabled() || 48 | Tasks::is_scheduled( self::ACTION ) !== false 49 | ) { 50 | return; 51 | } 52 | 53 | // Schedule the task. 54 | $this->recurring( strtotime( 'now' ), MINUTE_IN_SECONDS ) 55 | ->unique() 56 | ->register(); 57 | } 58 | 59 | /** 60 | * Perform email sending. 61 | * 62 | * @since 4.0.0 63 | */ 64 | public function process() { 65 | 66 | $queue = wp_mail_smtp()->get_queue(); 67 | 68 | $queue->process(); 69 | 70 | if ( ! $queue->is_enabled() ) { 71 | $this->cancel_force(); 72 | } 73 | } 74 | 75 | /** 76 | * Cleanup completed tasks. 77 | * 78 | * @since 4.1.0 79 | */ 80 | public function cleanup() { 81 | 82 | $this->remove_completed( 10 ); 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /src/Tasks/Queue/SendEnqueuedEmailTask.php: -------------------------------------------------------------------------------- 1 | async() 62 | ->params( $email_id ) 63 | ->register(); 64 | } 65 | 66 | /** 67 | * Perform email sending. 68 | * 69 | * @since 4.0.0 70 | * 71 | * @param int $meta_id The Meta ID with the stored task parameters. 72 | */ 73 | public function process( $meta_id ) { 74 | 75 | $task_meta = new Meta(); 76 | $meta = $task_meta->get( (int) $meta_id ); 77 | 78 | // We should actually receive the passed parameter. 79 | if ( empty( $meta ) || empty( $meta->data ) || count( $meta->data ) < 1 ) { 80 | return; 81 | } 82 | 83 | $email_id = $meta->data[0]; 84 | 85 | wp_mail_smtp()->get_queue()->send_email( $email_id ); 86 | } 87 | 88 | /** 89 | * Cleanup completed tasks. 90 | * 91 | * @since 4.1.0 92 | */ 93 | public function cleanup() { 94 | 95 | $this->remove_completed( 10 ); 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /src/Tasks/Reports/SummaryEmailTask.php: -------------------------------------------------------------------------------- 1 | recurring( $date->getTimestamp(), WEEK_IN_SECONDS ) 56 | ->unique() 57 | ->register(); 58 | } 59 | 60 | /** 61 | * Process summary report email send. 62 | * 63 | * @since 3.0.0 64 | * 65 | * @param int $meta_id The Meta ID with the stored task parameters. 66 | */ 67 | public function process( $meta_id ) { 68 | 69 | // Prevent email sending if summary report email is disabled. 70 | if ( SummaryReportEmail::is_disabled() || ! $this->is_allowed() ) { 71 | return; 72 | } 73 | 74 | // Update the last sent week at the top to prevent multiple emails in case of task failure and retry. 75 | update_option( 'wp_mail_smtp_summary_report_email_last_sent_week', current_time( 'W' ) ); 76 | 77 | $reports = wp_mail_smtp()->get_reports(); 78 | 79 | $email = $reports->get_summary_report_email(); 80 | 81 | $email->send(); 82 | } 83 | 84 | /** 85 | * Check if the summary report email is allowed to be sent. 86 | * 87 | * The email is allowed to be sent if it was not sent in the current week. 88 | * 89 | * @since 4.1.1 90 | * 91 | * @return bool 92 | */ 93 | private function is_allowed() { 94 | 95 | $last_sent_week = get_option( 'wp_mail_smtp_summary_report_email_last_sent_week' ); 96 | $current_week = current_time( 'W' ); 97 | 98 | if ( $last_sent_week === false || ( (int) $current_week !== (int) $last_sent_week ) ) { 99 | return true; 100 | } 101 | 102 | return false; 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /src/Upgrade.php: -------------------------------------------------------------------------------- 1 | upgrades(); 28 | 29 | if ( empty( $upgrades ) ) { 30 | return; 31 | } 32 | 33 | // Run any available upgrades. 34 | foreach ( $upgrades as $upgrade ) { 35 | if ( is_callable( $upgrade ) ) { 36 | $upgrade(); 37 | } 38 | } 39 | 40 | // Update version post upgrade(s). 41 | update_option( 'wp_mail_smtp_version', WPMS_PLUGIN_VER ); 42 | } 43 | 44 | /** 45 | * Whether we need to perform an upgrade. 46 | * 47 | * @since 1.1.0 48 | * 49 | * @return array 50 | */ 51 | protected function upgrades() { 52 | 53 | $version = get_option( 'wp_mail_smtp_version' ); 54 | 55 | /** 56 | * Filters the list of upgrade callbacks to run. 57 | * 58 | * @since 4.4.0 59 | * 60 | * @param array $upgrades List of upgrade callbacks to run. 61 | * @param string $version Latest installed version of the plugin. 62 | */ 63 | $upgrades = apply_filters( 'wp_mail_smtp_upgrade_upgrades', [], $version ); 64 | 65 | // Version 1.1.0 upgrade; prior to this the option was not available. 66 | if ( empty( $version ) ) { 67 | $upgrades[] = [ $this, 'v110_upgrade' ]; 68 | } 69 | 70 | return $upgrades; 71 | } 72 | 73 | /** 74 | * Upgrade routine for v1.1.0. 75 | * 76 | * Set SMTPAutoTLS to true. 77 | * 78 | * @since 1.1.0 79 | */ 80 | public function v110_upgrade() { 81 | 82 | // Enable SMTPAutoTLS option. 83 | $values = [ 84 | 'smtp' => [ 85 | 'autotls' => true, 86 | ], 87 | ]; 88 | 89 | Options::init()->set( $values, false, false ); 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /wp-mail-smtp.php: -------------------------------------------------------------------------------- 1 |