Easy WP SMTP - Version 1.3.0

Version Description

  • Plugin will display an error message if log file is not writeable when "Clear Log" is clicked.
  • Actual SMTP password is replaced by a gag on the settings page.
  • Fixed minor bug in Reply-To option handling (thanks to arildur).
  • Some improvements in developers-related options (thanks to erikmolenaar).
Download this release

Release Info

Developer mra13
Plugin Icon 128x128 Easy WP SMTP
Version 1.3.0
Comparing to
See all releases

Code changes from version 1.2.9 to 1.3.0

Files changed (3) hide show
  1. easy-wp-smtp-admin-menu.php +18 -7
  2. easy-wp-smtp.php +31 -14
  3. readme.txt +7 -1
easy-wp-smtp-admin-menu.php CHANGED
@@ -22,6 +22,7 @@ function swpsmtp_settings() {
22
 
23
  $swpsmtp_options = get_option('swpsmtp_options');
24
  $smtp_test_mail = get_option('smtp_test_mail');
 
25
  if (empty($smtp_test_mail)) {
26
  $smtp_test_mail = array('swpsmtp_to' => '', 'swpsmtp_subject' => '', 'swpsmtp_message' => '',);
27
  }
@@ -48,11 +49,17 @@ function swpsmtp_settings() {
48
  $swpsmtp_options['smtp_settings']['type_encryption'] = ( isset($_POST['swpsmtp_smtp_type_encryption']) ) ? sanitize_text_field($_POST['swpsmtp_smtp_type_encryption']) : 'none';
49
  $swpsmtp_options['smtp_settings']['autentication'] = ( isset($_POST['swpsmtp_smtp_autentication']) ) ? sanitize_text_field($_POST['swpsmtp_smtp_autentication']) : 'yes';
50
  $swpsmtp_options['smtp_settings']['username'] = sanitize_text_field($_POST['swpsmtp_smtp_username']);
51
- $smtp_password = stripslashes($_POST['swpsmtp_smtp_password']);
52
- $swpsmtp_options['smtp_settings']['password'] = base64_encode($smtp_password);
 
 
53
  $swpsmtp_options['smtp_settings']['enable_debug'] = isset($_POST['swpsmtp_enable_debug']) ? 1 : false;
54
  $swpsmtp_options['enable_domain_check'] = isset($_POST['swpsmtp_enable_domain_check']) ? 1 : false;
55
- $swpsmtp_options['allowed_domains'] = isset($_POST['swpsmtp_allowed_domains']) ? sanitize_text_field($_POST['swpsmtp_allowed_domains']) : (isset($swpsmtp_options['allowed_domains']) ? $swpsmtp_options['allowed_domains'] : '');
 
 
 
 
56
 
57
  /* Check value from "SMTP port" option */
58
  if (isset($_POST['swpsmtp_smtp_port'])) {
@@ -182,7 +189,7 @@ function swpsmtp_settings() {
182
  <tr class="ad_opt swpsmtp_smtp_options">
183
  <th><?php _e('SMTP Password', 'easy-wp-smtp'); ?></th>
184
  <td>
185
- <input type='password' name='swpsmtp_smtp_password' value='<?php echo esc_attr(swpsmtp_get_password()); ?>' /><br />
186
  <p class="description"><?php _e("The password to login to your mail server", 'easy-wp-smtp'); ?></p>
187
  </td>
188
  </tr>
@@ -210,7 +217,7 @@ function swpsmtp_settings() {
210
  <td>
211
  <input type="checkbox" id="swpsmtp_enable_domain_check" name="swpsmtp_enable_domain_check" value="1"<?php echo (isset($swpsmtp_options['enable_domain_check']) && ($swpsmtp_options['enable_domain_check'])) ? ' checked' : ''; ?>/>
212
  <p class="description"><?php _e("This option is usually used by developers only. SMTP settings will be used only if the site is running on following domain(s):", 'easy-wp-smtp'); ?></p>
213
- <input type="text" name="swpsmtp_allowed_domains" value="<?php echo $swpsmtp_options['allowed_domains']; ?>"<?php echo (isset($swpsmtp_options['enable_domain_check']) && ($swpsmtp_options['enable_domain_check'])) ? '' : ' disabled'; ?>/>
214
  <p class="description"><?php _e("Coma-separated domains list. Example: domain1.com, domain2.com", 'easy-wp-smtp'); ?></p>
215
  </td>
216
  </tr>
@@ -245,6 +252,8 @@ function swpsmtp_settings() {
245
  req.done(function (data) {
246
  if (data === '1') {
247
  alert("<?php _e('Log cleared.', 'easy-wp-smtp'); ?>");
 
 
248
  }
249
  });
250
  }
@@ -297,7 +306,7 @@ function swpsmtp_settings() {
297
  <div class="swpsmtp-yellow-box">
298
  Visit the <a target="_blank" href="https://wp-ecommerce.net/easy-wordpress-smtp-send-emails-from-your-wordpress-site-using-a-smtp-server-2197">Easy WP SMTP</a> plugin's documentation page to learn how to use this plugin.
299
  </div>
300
-
301
  <?php
302
  echo '</div></div>'; //<!-- end of #poststuff and #post-body -->
303
  echo '</div>'; //<!-- end of .wrap #swpsmtp-mail .swpsmtp-mail -->
@@ -322,7 +331,9 @@ function swpsmtp_admin_init() {
322
  $swpsmtp_options = get_option('swpsmtp_options');
323
  $log_file_name = $swpsmtp_options['smtp_settings']['log_file_name'];
324
  if (!file_exists(plugin_dir_path(__FILE__) . $log_file_name)) {
325
- swpsmtp_write_to_log("Easy WP SMTP debug log file\r\n\r\n");
 
 
326
  }
327
  $logfile = fopen(plugin_dir_path(__FILE__) . $log_file_name, 'rb');
328
  if (!$logfile) {
22
 
23
  $swpsmtp_options = get_option('swpsmtp_options');
24
  $smtp_test_mail = get_option('smtp_test_mail');
25
+ $gag_password = '#easywpsmtpgagpass#';
26
  if (empty($smtp_test_mail)) {
27
  $smtp_test_mail = array('swpsmtp_to' => '', 'swpsmtp_subject' => '', 'swpsmtp_message' => '',);
28
  }
49
  $swpsmtp_options['smtp_settings']['type_encryption'] = ( isset($_POST['swpsmtp_smtp_type_encryption']) ) ? sanitize_text_field($_POST['swpsmtp_smtp_type_encryption']) : 'none';
50
  $swpsmtp_options['smtp_settings']['autentication'] = ( isset($_POST['swpsmtp_smtp_autentication']) ) ? sanitize_text_field($_POST['swpsmtp_smtp_autentication']) : 'yes';
51
  $swpsmtp_options['smtp_settings']['username'] = sanitize_text_field($_POST['swpsmtp_smtp_username']);
52
+ $smtp_password = $_POST['swpsmtp_smtp_password'];
53
+ if ($smtp_password !== $gag_password) {
54
+ $swpsmtp_options['smtp_settings']['password'] = base64_encode($smtp_password);
55
+ }
56
  $swpsmtp_options['smtp_settings']['enable_debug'] = isset($_POST['swpsmtp_enable_debug']) ? 1 : false;
57
  $swpsmtp_options['enable_domain_check'] = isset($_POST['swpsmtp_enable_domain_check']) ? 1 : false;
58
+ if (isset($_POST['swpsmtp_allowed_domains'])) {
59
+ $swpsmtp_options['allowed_domains'] = base64_encode(sanitize_text_field($_POST['swpsmtp_allowed_domains']));
60
+ } else if (!isset($swpsmtp_options['allowed_domains'])) {
61
+ $swpsmtp_options['allowed_domains'] = '';
62
+ }
63
 
64
  /* Check value from "SMTP port" option */
65
  if (isset($_POST['swpsmtp_smtp_port'])) {
189
  <tr class="ad_opt swpsmtp_smtp_options">
190
  <th><?php _e('SMTP Password', 'easy-wp-smtp'); ?></th>
191
  <td>
192
+ <input type='password' name='swpsmtp_smtp_password' value='<?php echo (swpsmtp_get_password() !== '' ? $gag_password : ''); ?>' /><br />
193
  <p class="description"><?php _e("The password to login to your mail server", 'easy-wp-smtp'); ?></p>
194
  </td>
195
  </tr>
217
  <td>
218
  <input type="checkbox" id="swpsmtp_enable_domain_check" name="swpsmtp_enable_domain_check" value="1"<?php echo (isset($swpsmtp_options['enable_domain_check']) && ($swpsmtp_options['enable_domain_check'])) ? ' checked' : ''; ?>/>
219
  <p class="description"><?php _e("This option is usually used by developers only. SMTP settings will be used only if the site is running on following domain(s):", 'easy-wp-smtp'); ?></p>
220
+ <input type="text" name="swpsmtp_allowed_domains" value="<?php echo base64_decode_maybe($swpsmtp_options['allowed_domains']); ?>"<?php echo (isset($swpsmtp_options['enable_domain_check']) && ($swpsmtp_options['enable_domain_check'])) ? '' : ' disabled'; ?>/>
221
  <p class="description"><?php _e("Coma-separated domains list. Example: domain1.com, domain2.com", 'easy-wp-smtp'); ?></p>
222
  </td>
223
  </tr>
252
  req.done(function (data) {
253
  if (data === '1') {
254
  alert("<?php _e('Log cleared.', 'easy-wp-smtp'); ?>");
255
+ } else {
256
+ alert("Error occured: " + data);
257
  }
258
  });
259
  }
306
  <div class="swpsmtp-yellow-box">
307
  Visit the <a target="_blank" href="https://wp-ecommerce.net/easy-wordpress-smtp-send-emails-from-your-wordpress-site-using-a-smtp-server-2197">Easy WP SMTP</a> plugin's documentation page to learn how to use this plugin.
308
  </div>
309
+
310
  <?php
311
  echo '</div></div>'; //<!-- end of #poststuff and #post-body -->
312
  echo '</div>'; //<!-- end of .wrap #swpsmtp-mail .swpsmtp-mail -->
331
  $swpsmtp_options = get_option('swpsmtp_options');
332
  $log_file_name = $swpsmtp_options['smtp_settings']['log_file_name'];
333
  if (!file_exists(plugin_dir_path(__FILE__) . $log_file_name)) {
334
+ if (swpsmtp_write_to_log("Easy WP SMTP debug log file\r\n\r\n") === false) {
335
+ wp_die('Can\'t write to log file. Check if plugin directory (' . plugin_dir_path(__FILE__) . ') is writeable.');
336
+ };
337
  }
338
  $logfile = fopen(plugin_dir_path(__FILE__) . $log_file_name, 'rb');
339
  if (!$logfile) {
easy-wp-smtp.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /*
3
  Plugin Name: Easy WP SMTP
4
- Version: 1.2.9
5
  Plugin URI: https://wp-ecommerce.net/easy-wordpress-smtp-send-emails-from-your-wordpress-site-using-a-smtp-server-2197
6
  Author: wpecommerce
7
  Author URI: https://wp-ecommerce.net/
@@ -82,9 +82,12 @@ if (!function_exists('swpsmtp_admin_head')) {
82
  }
83
 
84
  function swpsmtp_clear_log() {
85
- swpsmtp_write_to_log("Easy WP SMTP debug log file\r\n\r\n", true);
86
- echo '1';
87
- die;
 
 
 
88
  }
89
 
90
  function swpsmtp_write_to_log($str, $overwrite = false) {
@@ -94,12 +97,18 @@ function swpsmtp_write_to_log($str, $overwrite = false) {
94
  } else {
95
  // let's generate log file name
96
  $log_file_name = uniqid() . '_debug_log.txt';
97
- if (file_put_contents(plugin_dir_path(__FILE__) . $log_file_name, "Easy WP SMTP debug log file\r\n\r\n")) {
98
- $swpsmtp_options['smtp_settings']['log_file_name'] = $log_file_name;
99
- update_option('swpsmtp_options', $swpsmtp_options);
100
- }
 
 
 
 
 
 
101
  }
102
- file_put_contents(plugin_dir_path(__FILE__) . $log_file_name, $str, (!$overwrite ? FILE_APPEND : 0));
103
  }
104
 
105
  /**
@@ -118,12 +127,13 @@ if (!function_exists('swpsmtp_init_smtp')) {
118
  if (isset($swpsmtp_options['enable_domain_check']) && $swpsmtp_options['enable_domain_check']) {
119
  //check if allowed domains list is not blank
120
  if (isset($swpsmtp_options['allowed_domains']) && !empty($swpsmtp_options['allowed_domains'])) {
 
121
  //let's see if we have one domain or coma-separated domains
122
  $domains_arr = explode(',', $swpsmtp_options['allowed_domains']);
123
  if (is_array($domains_arr) && !empty($domains_arr)) {
124
  //we have coma-separated list
125
  } else {
126
- //it's singe domain
127
  unset($domains_arr);
128
  $domains_arr = array($swpsmtp_options['allowed_domains']);
129
  }
@@ -146,20 +156,20 @@ if (!function_exists('swpsmtp_init_smtp')) {
146
  }
147
  /* Set the mailer type as per config above, this overrides the already called isMail method */
148
  $phpmailer->IsSMTP();
 
 
149
  //set ReplyTo option if needed
150
  //this should be set before SetFrom, otherwise might be ignored
151
  if (!empty($swpsmtp_options['reply_to_email'])) {
152
  $phpmailer->AddReplyTo($swpsmtp_options['reply_to_email'], $from_name);
153
  }
154
- $from_name = $swpsmtp_options['from_name_field'];
155
- $from_email = $swpsmtp_options['from_email_field'];
156
  // let's see if we have email ignore list populated
157
  if (isset($swpsmtp_options['email_ignore_list']) && !empty($swpsmtp_options['email_ignore_list'])) {
158
  $emails_arr = explode(',', $swpsmtp_options['email_ignore_list']);
159
  if (is_array($emails_arr) && !empty($emails_arr)) {
160
  //we have coma-separated list
161
  } else {
162
- //it's singe email
163
  unset($emails_arr);
164
  $emails_arr = array($swpsmtp_options['email_ignore_list']);
165
  }
@@ -365,9 +375,16 @@ function swpsmtp_activate() {
365
  if (!isset($swpsmtp_options['allowed_domains'])) {
366
  $domain = parse_url(get_site_url(), PHP_URL_HOST);
367
  if ($domain) {
368
- $swpsmtp_options['allowed_domains'] = $domain;
369
  update_option('swpsmtp_options', $swpsmtp_options);
370
  }
 
 
 
 
 
 
 
371
  }
372
  }
373
 
1
  <?php
2
  /*
3
  Plugin Name: Easy WP SMTP
4
+ Version: 1.3.0
5
  Plugin URI: https://wp-ecommerce.net/easy-wordpress-smtp-send-emails-from-your-wordpress-site-using-a-smtp-server-2197
6
  Author: wpecommerce
7
  Author URI: https://wp-ecommerce.net/
82
  }
83
 
84
  function swpsmtp_clear_log() {
85
+ if (swpsmtp_write_to_log("Easy WP SMTP debug log file\r\n\r\n", true) !== false) {
86
+ echo '1';
87
+ } else {
88
+ echo 'Can\'t clear log - log file is not writeable.';
89
+ }
90
+ wp_die();
91
  }
92
 
93
  function swpsmtp_write_to_log($str, $overwrite = false) {
97
  } else {
98
  // let's generate log file name
99
  $log_file_name = uniqid() . '_debug_log.txt';
100
+ $swpsmtp_options['smtp_settings']['log_file_name'] = $log_file_name;
101
+ update_option('swpsmtp_options', $swpsmtp_options);
102
+ file_put_contents(plugin_dir_path(__FILE__) . $log_file_name, "Easy WP SMTP debug log file\r\n\r\n");
103
+ }
104
+ return(file_put_contents(plugin_dir_path(__FILE__) . $log_file_name, $str, (!$overwrite ? FILE_APPEND : 0)));
105
+ }
106
+
107
+ function base64_decode_maybe($str) {
108
+ if (mb_detect_encoding($str) === mb_detect_encoding(base64_decode(base64_encode(base64_decode($str))))) {
109
+ $str = base64_decode($str);
110
  }
111
+ return $str;
112
  }
113
 
114
  /**
127
  if (isset($swpsmtp_options['enable_domain_check']) && $swpsmtp_options['enable_domain_check']) {
128
  //check if allowed domains list is not blank
129
  if (isset($swpsmtp_options['allowed_domains']) && !empty($swpsmtp_options['allowed_domains'])) {
130
+ $swpsmtp_options['allowed_domains'] = base64_decode_maybe($swpsmtp_options['allowed_domains']);
131
  //let's see if we have one domain or coma-separated domains
132
  $domains_arr = explode(',', $swpsmtp_options['allowed_domains']);
133
  if (is_array($domains_arr) && !empty($domains_arr)) {
134
  //we have coma-separated list
135
  } else {
136
+ //it's single domain
137
  unset($domains_arr);
138
  $domains_arr = array($swpsmtp_options['allowed_domains']);
139
  }
156
  }
157
  /* Set the mailer type as per config above, this overrides the already called isMail method */
158
  $phpmailer->IsSMTP();
159
+ $from_name = $swpsmtp_options['from_name_field'];
160
+ $from_email = $swpsmtp_options['from_email_field'];
161
  //set ReplyTo option if needed
162
  //this should be set before SetFrom, otherwise might be ignored
163
  if (!empty($swpsmtp_options['reply_to_email'])) {
164
  $phpmailer->AddReplyTo($swpsmtp_options['reply_to_email'], $from_name);
165
  }
 
 
166
  // let's see if we have email ignore list populated
167
  if (isset($swpsmtp_options['email_ignore_list']) && !empty($swpsmtp_options['email_ignore_list'])) {
168
  $emails_arr = explode(',', $swpsmtp_options['email_ignore_list']);
169
  if (is_array($emails_arr) && !empty($emails_arr)) {
170
  //we have coma-separated list
171
  } else {
172
+ //it's single email
173
  unset($emails_arr);
174
  $emails_arr = array($swpsmtp_options['email_ignore_list']);
175
  }
375
  if (!isset($swpsmtp_options['allowed_domains'])) {
376
  $domain = parse_url(get_site_url(), PHP_URL_HOST);
377
  if ($domain) {
378
+ $swpsmtp_options['allowed_domains'] = base64_encode($domain);
379
  update_option('swpsmtp_options', $swpsmtp_options);
380
  }
381
+ } else { // let's check if existing value should be base64 encoded
382
+ if (!empty($swpsmtp_options['allowed_domains'])) {
383
+ if (base64_decode_maybe($swpsmtp_options['allowed_domains']) === $swpsmtp_options['allowed_domains']) {
384
+ $swpsmtp_options['allowed_domains'] = base64_encode($swpsmtp_options['allowed_domains']);
385
+ update_option('swpsmtp_options', $swpsmtp_options);
386
+ }
387
+ }
388
  }
389
  }
390
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://wp-ecommerce.net/easy-wordpress-smtp-send-emails-from-your-
4
  Tags: mail, wordpress smtp, phpmailer, smtp, wp_mail, email, gmail, outgoing mail, privacy, security, sendmail, ssl, tls, wp-phpmailer, mail smtp, wp smtp
5
  Requires at least: 4.3
6
  Tested up to: 4.8
7
- Stable tag: 1.2.9
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -77,6 +77,12 @@ Inspired by [WP Mail SMTP](http://wordpress.org/plugins/wp-mail-smtp/) plugin
77
 
78
  == Changelog ==
79
 
 
 
 
 
 
 
80
  = 1.2.9 =
81
  * Added additional setting option to deal with email aliases (thanks to bradclarke365).
82
  * Fixed "Reply-To" option wasn't saving if it is blank.
4
  Tags: mail, wordpress smtp, phpmailer, smtp, wp_mail, email, gmail, outgoing mail, privacy, security, sendmail, ssl, tls, wp-phpmailer, mail smtp, wp smtp
5
  Requires at least: 4.3
6
  Tested up to: 4.8
7
+ Stable tag: 1.3.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
77
 
78
  == Changelog ==
79
 
80
+ = 1.3.0 =
81
+ * Plugin will display an error message if log file is not writeable when "Clear Log" is clicked.
82
+ * Actual SMTP password is replaced by a gag on the settings page.
83
+ * Fixed minor bug in Reply-To option handling (thanks to arildur).
84
+ * Some improvements in developers-related options (thanks to erikmolenaar).
85
+
86
  = 1.2.9 =
87
  * Added additional setting option to deal with email aliases (thanks to bradclarke365).
88
  * Fixed "Reply-To" option wasn't saving if it is blank.