Post SMTP Mailer/Email Log - Version 2.0.21

Version Description

  • 2021-02-11
  • Fixed: Security issue - nonce validation.
  • Fixed: Class PostmanViewController not found
  • New: New wp-config.php constant to disable the email logger
Download this release

Release Info

Developer yehudah
Plugin Icon 128x128 Post SMTP Mailer/Email Log
Version 2.0.21
Comparing to
See all releases

Code changes from version 2.0.20 to 2.0.21

Postman/Postman-Email-Log/PostmanEmailLogController.php CHANGED
@@ -48,9 +48,10 @@ class PostmanEmailLogController {
48
  $this,
49
  'on_admin_init',
50
  ) );
 
51
 
 
52
 
53
- }
54
  if ( is_admin() ) {
55
  $actionName = self::RESEND_MAIL_AJAX_SLUG;
56
  $fullname = 'wp_ajax_' . $actionName;
@@ -62,6 +63,18 @@ class PostmanEmailLogController {
62
  }
63
  }
64
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  /**
66
  */
67
  function on_admin_init() {
@@ -76,10 +89,15 @@ class PostmanEmailLogController {
76
  }
77
 
78
  function handleCsvExport() {
79
- if ( isset( $_REQUEST['post-smtp-log-nonce'] ) && ! wp_verify_nonce( $_REQUEST['post-smtp-log-nonce'], 'post-smtp' ) )
80
- die( 'Security check' );
 
81
 
82
- if ( isset( $_GET['postman_export_csv'] ) && current_user_can( Postman::MANAGE_POSTMAN_CAPABILITY_LOGS ) ) {
 
 
 
 
83
  $args = array(
84
  'post_type' => PostmanEmailLogPostType::POSTMAN_CUSTOM_POST_TYPE_SLUG,
85
  'post_status' => PostmanEmailLogService::POSTMAN_CUSTOM_POST_STATUS_PRIVATE,
@@ -467,10 +485,7 @@ class PostmanEmailLogController {
467
  </div>
468
 
469
  </div>
470
- <div class="error" style="padding: 20px; font-size: 16px;">
471
- <strong>For more advanced, better performance and UI Email logger check our new extension:</strong><br><br>
472
- <a style="font-weight: bold;" target="_blank" href="https://postmansmtp.com/extensions/better-email-logger-post-smtp-extension/">Better Email Logger</a>
473
- </div>
474
  </form>
475
 
476
  <!-- Forms are NOT created automatically, so you need to wrap the table in one to use features like bulk actions -->
48
  $this,
49
  'on_admin_init',
50
  ) );
51
+ }
52
 
53
+ add_action( 'wp_ajax_post_smtp_log_trash_all', array( $this, 'post_smtp_log_trash_all' ) );
54
 
 
55
  if ( is_admin() ) {
56
  $actionName = self::RESEND_MAIL_AJAX_SLUG;
57
  $fullname = 'wp_ajax_' . $actionName;
63
  }
64
  }
65
 
66
+ function post_smtp_log_trash_all() {
67
+ check_admin_referer('post-smtp', 'security' );
68
+
69
+ if ( ! current_user_can( Postman::MANAGE_POSTMAN_CAPABILITY_LOGS ) ) {
70
+ wp_send_json_error( 'No permissions to manage Post SMTP logs.');
71
+ }
72
+
73
+ $purger = new PostmanEmailLogPurger();
74
+ $purger->removeAll();
75
+ wp_send_json_success();
76
+ }
77
+
78
  /**
79
  */
80
  function on_admin_init() {
89
  }
90
 
91
  function handleCsvExport() {
92
+ if ( ! isset( $_GET['postman_export_csv'] ) ) {
93
+ return;
94
+ }
95
 
96
+ if ( ! isset( $_REQUEST['post-smtp-log-nonce'] ) || ! wp_verify_nonce( $_REQUEST['post-smtp-log-nonce'], 'post-smtp' ) ) {
97
+ wp_die( 'Security check' );
98
+ }
99
+
100
+ if ( current_user_can( Postman::MANAGE_POSTMAN_CAPABILITY_LOGS ) ) {
101
  $args = array(
102
  'post_type' => PostmanEmailLogPostType::POSTMAN_CUSTOM_POST_TYPE_SLUG,
103
  'post_status' => PostmanEmailLogService::POSTMAN_CUSTOM_POST_STATUS_PRIVATE,
485
  </div>
486
 
487
  </div>
488
+ <div class="error">Please notice: when you select a date for example 11/20/2017, behind the scene the query select <b>11/20/2017 00:00:00</b>.<br>So if you searching for an email arrived that day at any hour you need to select 11/20/2017 as the <b>From Date</b> and 11/21/2017 as the <b>To Date</b>.</div>
 
 
 
489
  </form>
490
 
491
  <!-- Forms are NOT created automatically, so you need to wrap the table in one to use features like bulk actions -->
Postman/Postman-Email-Log/PostmanEmailLogView.php CHANGED
@@ -265,10 +265,12 @@ class PostmanEmailLogView extends WP_List_Table {
265
  * ************************************************************************
266
  */
267
  function prepare_items() {
268
- if ( isset( $_REQUEST['post-smtp-log-nonce'] ) && ! wp_verify_nonce( $_REQUEST['post-smtp-log-nonce'], 'post-smtp' ) )
269
- die( 'Security check' );
270
 
271
- /**
 
 
 
 
272
  * First, lets decide how many records per page to show
273
  */
274
  $per_page = isset( $_GET['postman_page_records'] ) ? absint( $_GET['postman_page_records'] ) : 10;
@@ -355,14 +357,6 @@ class PostmanEmailLogView extends WP_List_Table {
355
  }
356
  $posts = new WP_query( $args );
357
 
358
- if ( isset( $_GET['postman_trash_all'] ) && current_user_can(Postman::MANAGE_POSTMAN_CAPABILITY_LOGS ) ) {
359
- foreach ( $posts->posts as $post ) {
360
- wp_delete_post( $post->ID, true );
361
- }
362
-
363
- $posts->posts = array();
364
- }
365
-
366
  $date_format = get_option( 'date_format' );
367
  $time_format = get_option( 'time_format' );
368
 
265
  * ************************************************************************
266
  */
267
  function prepare_items() {
 
 
268
 
269
+ if ( ! current_user_can( Postman::MANAGE_POSTMAN_CAPABILITY_LOGS ) ) {
270
+ wp_die( sprintf( 'You need to add to this user the %s capability. You can try disable and enable the plugin or you can do it with a plugin like `user role editor`.', Postman::MANAGE_POSTMAN_CAPABILITY_LOGS ) );
271
+ }
272
+
273
+ /**
274
  * First, lets decide how many records per page to show
275
  */
276
  $per_page = isset( $_GET['postman_page_records'] ) ? absint( $_GET['postman_page_records'] ) : 10;
357
  }
358
  $posts = new WP_query( $args );
359
 
 
 
 
 
 
 
 
 
360
  $date_format = get_option( 'date_format' );
361
  $time_format = get_option( 'time_format' );
362
 
Postman/Postman-Mail/Zend-1.12.10/Mail/Transport/Abstract.php CHANGED
@@ -277,7 +277,11 @@ abstract class Postman_Zend_Mail_Transport_Abstract
277
  }
278
 
279
  if (!$body) {
280
- $body = '';
 
 
 
 
281
  }
282
 
283
  // Get headers
277
  }
278
 
279
  if (!$body) {
280
+ /**
281
+ * @see Postman_Zend_Mail_Transport_Exception
282
+ */
283
+ require_once 'Exception.php';
284
+ throw new Postman_Zend_Mail_Transport_Exception('This email has empty body');
285
  }
286
 
287
  // Get headers
Postman/Postman.php CHANGED
@@ -70,7 +70,6 @@ class Postman {
70
  require_once 'Postman-Mail/PostmanMyMailConnector.php';
71
  require_once 'Postman-Mail/PostmanContactForm7.php';
72
  require_once 'Phpmailer/PostsmtpMailer.php';
73
- require_once 'Extensions/License/PostmanLicenseManager.php';
74
  require_once 'Extensions/Admin/PostmanAdmin.php';
75
  //require_once 'Postman-Mail/PostmanWooCommerce.php';
76
 
@@ -198,8 +197,6 @@ class Postman {
198
  // register the email transports
199
  $this->registerTransports( $this->rootPluginFilenameAndPath );
200
 
201
- PostmanLicenseManager::get_instance()->init();
202
-
203
  // load the text domain
204
  $this->loadTextDomain();
205
 
@@ -270,6 +267,9 @@ class Postman {
270
  require_once 'Postman-Configuration/PostmanConfigurationController.php';
271
  require_once 'Postman-Send-Test-Email/PostmanSendTestEmailController.php';
272
  require_once 'Postman-Diagnostic-Test/PostmanDiagnosticTestController.php';
 
 
 
273
 
274
  // create and store an instance of the MessageHandler
275
  $this->messageHandler = new PostmanMessageHandler();
70
  require_once 'Postman-Mail/PostmanMyMailConnector.php';
71
  require_once 'Postman-Mail/PostmanContactForm7.php';
72
  require_once 'Phpmailer/PostsmtpMailer.php';
 
73
  require_once 'Extensions/Admin/PostmanAdmin.php';
74
  //require_once 'Postman-Mail/PostmanWooCommerce.php';
75
 
197
  // register the email transports
198
  $this->registerTransports( $this->rootPluginFilenameAndPath );
199
 
 
 
200
  // load the text domain
201
  $this->loadTextDomain();
202
 
267
  require_once 'Postman-Configuration/PostmanConfigurationController.php';
268
  require_once 'Postman-Send-Test-Email/PostmanSendTestEmailController.php';
269
  require_once 'Postman-Diagnostic-Test/PostmanDiagnosticTestController.php';
270
+ require_once 'Extensions/License/PostmanLicenseManager.php';
271
+
272
+ PostmanLicenseManager::get_instance()->init();
273
 
274
  // create and store an instance of the MessageHandler
275
  $this->messageHandler = new PostmanMessageHandler();
Postman/PostmanInputSanitizer.php CHANGED
@@ -20,6 +20,7 @@ if ( ! class_exists( 'PostmanInputSanitizer' ) ) {
20
  * Contains all settings fields as array keys
21
  */
22
  public function sanitize( $input ) {
 
23
  $this->logger->debug( 'Sanitizing data before storage' );
24
 
25
  $new_input = array();
@@ -124,6 +125,7 @@ if ( ! class_exists( 'PostmanInputSanitizer' ) ) {
124
  * @param mixed $new_input
125
  */
126
  public function sanitizePassword( $desc, $key, $input, &$new_input, $existingPassword ) {
 
127
  // WordPress calling Sanitize twice is a known issue
128
  // https://core.trac.wordpress.org/ticket/21989
129
  $action = PostmanSession::getInstance()->getAction();
20
  * Contains all settings fields as array keys
21
  */
22
  public function sanitize( $input ) {
23
+
24
  $this->logger->debug( 'Sanitizing data before storage' );
25
 
26
  $new_input = array();
125
  * @param mixed $new_input
126
  */
127
  public function sanitizePassword( $desc, $key, $input, &$new_input, $existingPassword ) {
128
+
129
  // WordPress calling Sanitize twice is a known issue
130
  // https://core.trac.wordpress.org/ticket/21989
131
  $action = PostmanSession::getInstance()->getAction();
Postman/PostmanOptions.php CHANGED
@@ -192,6 +192,10 @@ if ( ! class_exists( 'PostmanOptions' ) ) {
192
  return ! isset( $this->options [ PostmanOptions::TRANSPORT_TYPE ] );
193
  }
194
  public function isMailLoggingEnabled() {
 
 
 
 
195
  $allowed = $this->isMailLoggingAllowed();
196
  $enabled = $this->getMailLoggingEnabled() == self::MAIL_LOG_ENABLED_OPTION_YES;
197
  return $allowed && $enabled;
@@ -212,13 +216,15 @@ if ( ! class_exists( 'PostmanOptions' ) ) {
212
  public function getMailLoggingEnabled() {
213
  if ( isset( $this->options [ PostmanOptions::MAIL_LOG_ENABLED_OPTION ] ) ) {
214
  return $this->options [ PostmanOptions::MAIL_LOG_ENABLED_OPTION ];
215
- } else { return self::DEFAULT_MAIL_LOG_ENABLED; }
 
 
216
  }
217
  public function getRunMode() {
218
  if ( defined( 'POST_SMTP_RUN_MODE' ) ) {
219
  return POST_SMTP_RUN_MODE;
220
  }
221
-
222
  if ( isset( $this->options [ self::RUN_MODE ] ) ) {
223
  return $this->options [ self::RUN_MODE ];
224
  } else { return self::DEFAULT_RUN_MODE; }
@@ -436,7 +442,7 @@ if ( ! class_exists( 'PostmanOptions' ) ) {
436
  if ( defined( 'POST_SMTP_API_KEY' ) ) {
437
  return POST_SMTP_API_KEY;
438
  }
439
-
440
  if ( isset( $this->options [ PostmanOptions::MANDRILL_API_KEY ] ) ) {
441
  return base64_decode( $this->options [ PostmanOptions::MANDRILL_API_KEY ] ); }
442
  }
@@ -467,7 +473,7 @@ if ( ! class_exists( 'PostmanOptions' ) ) {
467
  return $this->options [ PostmanOptions::MAILGUN_REGION ];
468
  }
469
  }
470
-
471
  public function getReplyTo() {
472
  if ( isset( $this->options [ PostmanOptions::REPLY_TO ] ) ) {
473
  return $this->options [ PostmanOptions::REPLY_TO ]; }
@@ -493,7 +499,7 @@ if ( ! class_exists( 'PostmanOptions' ) ) {
493
  if ( isset( $this->options [ PostmanOptions::DISABLE_EMAIL_VALIDAITON ] ) ) {
494
  return $this->options [ PostmanOptions::DISABLE_EMAIL_VALIDAITON ]; }
495
  }
496
-
497
  /**
498
  * (non-PHPdoc)
499
  *
192
  return ! isset( $this->options [ PostmanOptions::TRANSPORT_TYPE ] );
193
  }
194
  public function isMailLoggingEnabled() {
195
+ if ( defined( 'POST_SMTP_CORE_MAIL_LOG' ) ) {
196
+ return POST_SMTP_CORE_MAIL_LOG;
197
+ }
198
+
199
  $allowed = $this->isMailLoggingAllowed();
200
  $enabled = $this->getMailLoggingEnabled() == self::MAIL_LOG_ENABLED_OPTION_YES;
201
  return $allowed && $enabled;
216
  public function getMailLoggingEnabled() {
217
  if ( isset( $this->options [ PostmanOptions::MAIL_LOG_ENABLED_OPTION ] ) ) {
218
  return $this->options [ PostmanOptions::MAIL_LOG_ENABLED_OPTION ];
219
+ } else {
220
+ return self::DEFAULT_MAIL_LOG_ENABLED;
221
+ }
222
  }
223
  public function getRunMode() {
224
  if ( defined( 'POST_SMTP_RUN_MODE' ) ) {
225
  return POST_SMTP_RUN_MODE;
226
  }
227
+
228
  if ( isset( $this->options [ self::RUN_MODE ] ) ) {
229
  return $this->options [ self::RUN_MODE ];
230
  } else { return self::DEFAULT_RUN_MODE; }
442
  if ( defined( 'POST_SMTP_API_KEY' ) ) {
443
  return POST_SMTP_API_KEY;
444
  }
445
+
446
  if ( isset( $this->options [ PostmanOptions::MANDRILL_API_KEY ] ) ) {
447
  return base64_decode( $this->options [ PostmanOptions::MANDRILL_API_KEY ] ); }
448
  }
473
  return $this->options [ PostmanOptions::MAILGUN_REGION ];
474
  }
475
  }
476
+
477
  public function getReplyTo() {
478
  if ( isset( $this->options [ PostmanOptions::REPLY_TO ] ) ) {
479
  return $this->options [ PostmanOptions::REPLY_TO ]; }
499
  if ( isset( $this->options [ PostmanOptions::DISABLE_EMAIL_VALIDAITON ] ) ) {
500
  return $this->options [ PostmanOptions::DISABLE_EMAIL_VALIDAITON ]; }
501
  }
502
+
503
  /**
504
  * (non-PHPdoc)
505
  *
Postman/PostmanViewController.php CHANGED
@@ -381,7 +381,6 @@ if ( ! class_exists( 'PostmanViewController' ) ) {
381
  <div class="ps-welcome-panel-column">
382
  <h4><img class="align-middle" src="<?php echo plugins_url( 'style/images/new.gif', dirname( __DIR__ ) . '/postman-smtp.php' ); ?>"><a style="color: black;" target="_blank" href="https://postmansmtp.com/extensions/">Extensions</a></h4>
383
  <ul>
384
- <li><a style="font-weight: bold;" target="_blank" href="https://postmansmtp.com/extensions/better-email-logger-post-smtp-extension/">Better Email Logger</a></li>
385
  <li><a target="_blank" href="https://postmansmtp.com/extensions/office-365-for-post-smtp-extension/">Office 365 API</a></li>
386
  <li><a target="_blank" href="https://postmansmtp.com/extensions/post-smtp-extension-for-amazon-ses/">Amazon SES</a></li>
387
  </ul>
@@ -397,7 +396,7 @@ if ( ! class_exists( 'PostmanViewController' ) ) {
397
  printf( '<li><a href="%s" data-security="%s" class="welcome-icon release-lock-file">%s</a></li>', '#', wp_create_nonce( "postman" ), __( 'Release Lock File Error', 'post-smtp' ) );
398
  printf( '<li><a href="https://wordpress.org/support/plugin/post-smtp/" class="welcome-icon postman_support">%s</a></li>', __( 'Online Support', 'post-smtp' ) );
399
  printf( '<li><a target="blank" class="align-middle" href="https://www.facebook.com/groups/post.smtp" class="welcome-icon postman_guides">%s</a></li>', __( 'Facebook Group', 'post-smtp' ) );
400
- printf( '<li><a target="blank" class="align-middle" href="https://postmansmtp.com/category/guides/" class="welcome-icon postman_guides">%s</a></li>', __( 'Guides', 'post-smtp' ) );
401
  print '</ul></div></div></div></div>';
402
  ?>
403
  </div>
381
  <div class="ps-welcome-panel-column">
382
  <h4><img class="align-middle" src="<?php echo plugins_url( 'style/images/new.gif', dirname( __DIR__ ) . '/postman-smtp.php' ); ?>"><a style="color: black;" target="_blank" href="https://postmansmtp.com/extensions/">Extensions</a></h4>
383
  <ul>
 
384
  <li><a target="_blank" href="https://postmansmtp.com/extensions/office-365-for-post-smtp-extension/">Office 365 API</a></li>
385
  <li><a target="_blank" href="https://postmansmtp.com/extensions/post-smtp-extension-for-amazon-ses/">Amazon SES</a></li>
386
  </ul>
396
  printf( '<li><a href="%s" data-security="%s" class="welcome-icon release-lock-file">%s</a></li>', '#', wp_create_nonce( "postman" ), __( 'Release Lock File Error', 'post-smtp' ) );
397
  printf( '<li><a href="https://wordpress.org/support/plugin/post-smtp/" class="welcome-icon postman_support">%s</a></li>', __( 'Online Support', 'post-smtp' ) );
398
  printf( '<li><a target="blank" class="align-middle" href="https://www.facebook.com/groups/post.smtp" class="welcome-icon postman_guides">%s</a></li>', __( 'Facebook Group', 'post-smtp' ) );
399
+ printf( '<li><a target="blank" class="align-middle" href="https://postmansmtp.com/category/guides/" class="welcome-icon postman_guides">%s</a></li>', __( 'Guides', 'post-smtp' ) );
400
  print '</ul></div></div></div></div>';
401
  ?>
402
  </div>
postman-smtp.php CHANGED
@@ -6,7 +6,7 @@ if ( ! defined( 'ABSPATH' ) ) {
6
  * Plugin Name: Post SMTP
7
  * Plugin URI: https://wordpress.org/plugins/post-smtp/
8
  * Description: Email not reliable? Post SMTP is the first and only WordPress SMTP plugin to implement OAuth 2.0 for Gmail, Hotmail and Yahoo Mail. Setup is a breeze with the Configuration Wizard and integrated Port Tester. Enjoy worry-free delivery even if your password changes!
9
- * Version: 2.0.20
10
  * Author: Yehuda Hassine
11
  * Text Domain: post-smtp
12
  * Author URI: https://postmansmtp.com
@@ -35,10 +35,10 @@ if ( ! defined( 'ABSPATH' ) ) {
35
  define( 'POST_SMTP_BASE', __FILE__ );
36
  define( 'POST_SMTP_PATH', __DIR__ );
37
  define( 'POST_SMTP_URL', plugins_url('', POST_SMTP_BASE ) );
38
- define( 'POST_SMTP_VER', '2.0.20' );
39
  define( 'POST_SMTP_SHOW_RELEASE_MESSAGE', true );
40
- define( 'POST_SMTP_RELEASE_MESSAGE', "I released a new Email Logger extension - A MUST DOWNLOAD." );
41
- define( 'POST_SMTP_RELEASE_URL', 'https://postmansmtp.com/extensions/better-email-logger-post-smtp-extension/' );
42
 
43
  $postman_smtp_exist = in_array( 'postman-smtp/postman-smtp.php', (array) get_option( 'active_plugins', array() ) );
44
  $required_php_version = version_compare( PHP_VERSION, '5.6.0', '<' );
6
  * Plugin Name: Post SMTP
7
  * Plugin URI: https://wordpress.org/plugins/post-smtp/
8
  * Description: Email not reliable? Post SMTP is the first and only WordPress SMTP plugin to implement OAuth 2.0 for Gmail, Hotmail and Yahoo Mail. Setup is a breeze with the Configuration Wizard and integrated Port Tester. Enjoy worry-free delivery even if your password changes!
9
+ * Version: 2.0.21
10
  * Author: Yehuda Hassine
11
  * Text Domain: post-smtp
12
  * Author URI: https://postmansmtp.com
35
  define( 'POST_SMTP_BASE', __FILE__ );
36
  define( 'POST_SMTP_PATH', __DIR__ );
37
  define( 'POST_SMTP_URL', plugins_url('', POST_SMTP_BASE ) );
38
+ define( 'POST_SMTP_VER', '2.0.21' );
39
  define( 'POST_SMTP_SHOW_RELEASE_MESSAGE', true );
40
+ define( 'POST_SMTP_RELEASE_MESSAGE', "Security fix and more." );
41
+ define( 'POST_SMTP_RELEASE_URL', 'https://wordpress.org/plugins/post-smtp/#developers' );
42
 
43
  $postman_smtp_exist = in_array( 'postman-smtp/postman-smtp.php', (array) get_option( 'active_plugins', array() ) );
44
  $required_php_version = version_compare( PHP_VERSION, '5.6.0', '<' );
readme.txt CHANGED
@@ -4,15 +4,15 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=yehudaha
4
  Tags: postman smtp, postman, smtp, email, mail, mailer, email log, oauth2, gmail, google apps, hotmail, yahoo, mandrill api, sendgrid api, elastic email, office365, mailgun
5
  Requires at least: 3.9
6
  Tested up to: 5.6
7
- Stable tag: 2.0.20
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
- Send, log and troubleshoot your Outgoing Email easily. Supports everything: SMTP, Gmail, Mailgun, office365, SendGrid, Elastic Email and OAuth 2.0!
12
 
13
  == Description ==
14
 
15
- = Looking for Office 365 OR Amazon SES API delivery? =
16
  Check this extensions page, it will update with more extensions so don't forget to follow:
17
  [https://postmansmtp.com/extensions/](https://postmansmtp.com/extensions/)
18
 
@@ -281,16 +281,20 @@ To avoid being flagged as spam, you need to prove your email isn't forged. On a
281
 
282
  == Changelog ==
283
 
284
- = 2.0.20 - 2020-01-28
285
- * Fixed: Allow empty body.
286
- * Fixed: Few small bugs.
287
- * New: A new Email Logger extension
288
 
289
- = 2.0.19 - 2020-01-19
290
  * Fixed: All reported office 365 issues.
291
  * New: Add link to Amazon SES Extension
292
 
293
- = 2.0.18 - 2020-01-17
 
 
 
 
294
  * New: Plugin Extensions
295
 
296
  = 2.0.16 - 2020-12-13
4
  Tags: postman smtp, postman, smtp, email, mail, mailer, email log, oauth2, gmail, google apps, hotmail, yahoo, mandrill api, sendgrid api, elastic email, office365, mailgun
5
  Requires at least: 3.9
6
  Tested up to: 5.6
7
+ Stable tag: 2.0.21
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
+ Send, log, and get notified when your emails are failing. Plus a unique option for secondary backup SMTP so your emails will never stop. Supports everything: SMTP, Gmail, Mailgun, office365, SendGrid, Elastic Email and OAuth 2.0!
12
 
13
  == Description ==
14
 
15
+ = Looking for Office 365 API delivery? =
16
  Check this extensions page, it will update with more extensions so don't forget to follow:
17
  [https://postmansmtp.com/extensions/](https://postmansmtp.com/extensions/)
18
 
281
 
282
  == Changelog ==
283
 
284
+ = 2.0.21 - 2021-02-11
285
+ * Fixed: Security issue - nonce validation.
286
+ * Fixed: Class ‘PostmanViewController’ not found
287
+ * New: New wp-config.php constant to disable the email logger = `POST_SMTP_CORE_MAIL_LOG`.
288
 
289
+ = 2.0.20 - 2021-01-19
290
  * Fixed: All reported office 365 issues.
291
  * New: Add link to Amazon SES Extension
292
 
293
+ = 2.0.19 - 2021-01-19
294
+ * Fixed: All reported office 365 issues.
295
+ * New: Add link to Amazon SES Extension
296
+
297
+ = 2.0.18 - 2021-01-17
298
  * New: Plugin Extensions
299
 
300
  = 2.0.16 - 2020-12-13
script/postman.js CHANGED
@@ -36,11 +36,21 @@ jQuery(document).ready(function($) {
36
  });
37
 
38
  $('#postman_trash_all').on('click',function(e) {
39
- if (confirm("Are You Sure?") == false) {
40
- e.preventDefault();
41
 
 
42
  return false;
43
  }
 
 
 
 
 
 
 
 
 
 
44
  });
45
 
46
  $('.release-lock-file').on('click', function(e) {
@@ -301,4 +311,4 @@ function postmanValidateAjaxResponseWithPopup(response) {
301
  return false;
302
  }
303
  return true;
304
- }
36
  });
37
 
38
  $('#postman_trash_all').on('click',function(e) {
39
+ e.preventDefault();
 
40
 
41
+ if (confirm("Are You Sure?") == false) {
42
  return false;
43
  }
44
+
45
+ let security = $('#post-smtp-log-nonce').val();
46
+
47
+ $.post(ajaxurl, {action: 'post_smtp_log_trash_all', security: security}, function(result) {
48
+ if ( result.success ) {
49
+ location.reload();
50
+ } else {
51
+ alert(result.data);
52
+ }
53
+ }, 'json');
54
  });
55
 
56
  $('.release-lock-file').on('click', function(e) {
311
  return false;
312
  }
313
  return true;
314
+ }
style/feeds.css ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #post_smtp_feeds_widget.postbox .inside {
2
+ padding: 0;
3
+ }
4
+
5
+ #post-smtp-dashboard-overview .dashicons {
6
+ vertical-align: middle;
7
+ font-size: 17px; }
8
+
9
+ #post-smtp-dashboard-overview .e-overview__header {
10
+ display: table;
11
+ width: 100%;
12
+ -webkit-box-shadow: 0 5px 8px rgba(0, 0, 0, 0.05);
13
+ box-shadow: 0 5px 8px rgba(0, 0, 0, 0.05);
14
+ margin: 0 -12px 8px;
15
+ padding: 0 12px 12px; }
16
+
17
+ #post-smtp-dashboard-overview .e-overview__logo, #post-smtp-dashboard-overview .e-overview__versions, #post-smtp-dashboard-overview .e-overview__create {
18
+ display: table-cell;
19
+ vertical-align: middle; }
20
+
21
+ #post-smtp-dashboard-overview .e-overview__logo {
22
+ width: 30px; }
23
+
24
+ #post-smtp-dashboard-overview .e-overview__versions {
25
+ padding: 0 10px;
26
+ font-size: 0.9em;
27
+ line-height: 1.5; }
28
+
29
+ #post-smtp-dashboard-overview .e-overview__version {
30
+ display: block; }
31
+
32
+ #post-smtp-dashboard-overview .e-overview__create {
33
+ text-align: right; }
34
+
35
+ #post-smtp-dashboard-overview .e-overview__post {
36
+ margin-top: 10px; }
37
+
38
+ #post-smtp-dashboard-overview .e-overview__post-link {
39
+ display: inline-block; }
40
+
41
+ #post-smtp-dashboard-overview .e-overview__badge {
42
+ background: #39b54a;
43
+ color: white;
44
+ font-size: 0.75em;
45
+ padding: 3px 6px;
46
+ -webkit-border-radius: 3px;
47
+ border-radius: 3px;
48
+ text-transform: uppercase; }
49
+
50
+ #post-smtp-dashboard-overview ul li {
51
+ padding: 5px 10px;
52
+ }
53
+
54
+ #post-smtp-dashboard-overview ul li:nth-child(even) {
55
+ background-color: #FAFAFA;
56
+ }
57
+
58
+ #post-smtp-dashboard-overview .e-overview__post-description {
59
+ margin: 0 0 1.5em; }
60
+
61
+ #post-smtp-dashboard-overview .e-overview__recently-edited li {
62
+ color: #72777c; }
63
+
64
+ #post-smtp-dashboard-overview .e-overview__feed {
65
+ font-size: 14px;
66
+ font-weight: 500; }
67
+ #post-smtp-dashboard-overview .e-overview__feed .e-overview__post-link {
68
+ padding-bottom: 5px; }
69
+
70
+ #post-smtp-dashboard-overview .e-overview__recently-edited .e-overview__heading, #post-smtp-dashboard-overview .e-overview__feed .e-overview__heading {
71
+ font-weight: 700;
72
+ border-bottom: 1px solid #eee;
73
+ margin: 0 -12px;
74
+ padding: 6px 12px; }
75
+
76
+ #post-smtp-dashboard-overview .e-overview__footer {
77
+ margin: 0 -12px -12px;
78
+ padding: 12px;
79
+ border-top: 1px solid #eee; }
80
+ #post-smtp-dashboard-overview .e-overview__footer ul {
81
+ display: -webkit-box;
82
+ display: -ms-flexbox;
83
+ display: flex;
84
+ list-style: none;
85
+ margin: 0;
86
+ padding: 0; }
87
+ #post-smtp-dashboard-overview .e-overview__footer ul li {
88
+ padding: 0 10px;
89
+ margin: 0;
90
+ border-left: 1px solid #ddd; }
91
+ #post-smtp-dashboard-overview .e-overview__footer ul li:first-child {
92
+ padding-left: 0;
93
+ border: none; }