Postie - Version 1.8.39

Version Description

(2017-04-18) = * Ensure the time zone is set when calculating the post time. * Additional debug output

Download this release

Release Info

Developer WayneAllen
Plugin Icon 128x128 Postie
Version 1.8.39
Comparing to
See all releases

Code changes from version 1.8.38 to 1.8.39

Files changed (5) hide show
  1. docs/Changes.txt +4 -0
  2. docs/Postie.txt +1 -1
  3. postie-functions.php +40 -31
  4. postie.php +3 -3
  5. readme.txt +5 -1
docs/Changes.txt CHANGED
@@ -35,6 +35,10 @@ All script, style and body tags are stripped from html emails.
35
  Attachments are now processed in the order they were attached.
36
 
37
  == CHANGELOG ==
 
 
 
 
38
  = 1.8.38 (2017-04-06) =
39
  * Update postie_notify_error to be less noisy.
40
 
35
  Attachments are now processed in the order they were attached.
36
 
37
  == CHANGELOG ==
38
+ = 1.8.39 (2017-04-18) =
39
+ * Ensure the time zone is set when calculating the post time.
40
+ * Additional debug output
41
+
42
  = 1.8.38 (2017-04-06) =
43
  * Update postie_notify_error to be less noisy.
44
 
docs/Postie.txt CHANGED
@@ -6,7 +6,7 @@ Plugin URI: http://PostiePlugin.com/
6
  Tags: e-mail, email, post-by-email
7
  Requires at least: 3.3.0
8
  Tested up to: 4.7.3
9
- Stable tag: 1.8.38
10
  License: GPLv2 or later
11
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
12
 
6
  Tags: e-mail, email, post-by-email
7
  Requires at least: 3.3.0
8
  Tested up to: 4.7.3
9
+ Stable tag: 1.8.39
10
  License: GPLv2 or later
11
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
12
 
postie-functions.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /*
3
- $Id: postie-functions.php 1631197 2017-04-06 15:35:38Z WayneAllen $
4
  */
5
 
6
  class PostiePostModifiers {
@@ -255,8 +255,10 @@ function filter_AttachmentTemplates($content, $mimeDecodedEmail, $post_id, $conf
255
  } else {
256
  $template = $attachment['template'];
257
  if ($config['images_append']) {
 
258
  $template = apply_filters('postie_place_media_after', $template, $attachment['wp_id']);
259
  } else {
 
260
  $template = apply_filters('postie_place_media_before', $template, $attachment['wp_id']);
261
  }
262
  $template = mb_str_replace('{CAPTION}', '', $template);
@@ -279,8 +281,10 @@ function filter_AttachmentTemplates($content, $mimeDecodedEmail, $post_id, $conf
279
  } else {
280
  $template = $attachment['template'];
281
  if ($config['images_append']) {
 
282
  $template = apply_filters('postie_place_media_after', $template, $attachment['wp_id']);
283
  } else {
 
284
  $template = apply_filters('postie_place_media_before', $template, $attachment['wp_id']);
285
  }
286
  $template = mb_str_replace('{CAPTION}', '', $template);
@@ -335,8 +339,10 @@ function filter_AttachmentTemplates($content, $mimeDecodedEmail, $post_id, $conf
335
  DebugEcho("filter_AttachmentTemplates: Auto gallery: link type $linktype");
336
  postie_show_filters_for('postie_gallery');
337
  if ($linktype == 'default') {
 
338
  $imageTemplate = apply_filters('postie_gallery', '[gallery]', $post_id);
339
  } else {
 
340
  $imageTemplate = apply_filters('postie_gallery', "[gallery link='$linktype']", $post_id);
341
  }
342
  DebugEcho("filter_AttachmentTemplates: Auto gallery: template '$imageTemplate'");
@@ -494,6 +500,7 @@ function postie_create_post($poster, $mimeDecodedEmail, $post_id, &$is_reply, $c
494
  }
495
 
496
  if ($delay > 0 && $post_status == 'publish') {
 
497
  $post_status = 'future';
498
  }
499
 
@@ -575,11 +582,12 @@ function PostEmail($poster, $mimeDecodedEmail, $config) {
575
  $tmpPost = array('post_title' => 'tmptitle', 'post_content' => 'tmpPost', 'post_status' => 'draft');
576
  $post_id = wp_insert_post($tmpPost, true);
577
  if (!is_wp_error($post_id)) {
578
- DebugEcho("tmp post id is $post_id");
579
 
580
  $is_reply = false;
581
  $postmodifiers = new PostiePostModifiers();
582
 
 
583
  $mimeDecodedEmail = apply_filters('postie_post_pre', $mimeDecodedEmail);
584
 
585
  $details = postie_create_post($poster, $mimeDecodedEmail, $post_id, $is_reply, $config, $postmodifiers);
@@ -587,7 +595,7 @@ function PostEmail($poster, $mimeDecodedEmail, $config) {
587
  $details = apply_filters('postie_post', $details);
588
  $details = apply_filters('postie_post_before', $details, $mimeDecodedEmail['headers']);
589
 
590
- DebugEcho("Post postie_post_before filter");
591
  DebugDump($details);
592
 
593
  if (empty($details)) {
@@ -599,8 +607,6 @@ function PostEmail($poster, $mimeDecodedEmail, $config) {
599
  EchoError("postie_post filter cleared the post, not saving.");
600
  }
601
  } else {
602
- postie_show_post_details($details);
603
-
604
  $postid = postie_save_post($details, $is_reply, $config['custom_image_field'], $postmodifiers);
605
 
606
  if ($config['confirmation_email'] != '') {
@@ -614,9 +620,14 @@ function PostEmail($poster, $mimeDecodedEmail, $config) {
614
  }
615
  postie_email_notify($mimeDecodedEmail, $recipients, $postid);
616
  }
 
 
 
 
 
617
  }
618
  } else {
619
- EchoError("PostEmail wp_insert_post failed: " . $post_id->get_error_message());
620
  DebugDump($post_id->get_error_messages());
621
  DebugDump($post_id->get_error_data());
622
  postie_notify_error("PostEmail wp_insert_post failed creating placeholder", $post_id->get_error_message());
@@ -900,12 +911,18 @@ function postie_save_post($details, $isReply, $customImageField, $postmodifiers)
900
  'user_id' => $details['user_ID']
901
  );
902
  $comment = apply_filters('postie_comment_before', $comment);
 
 
 
903
  $post_ID = wp_new_comment($comment);
 
 
904
  do_action('postie_comment_after', $comment);
905
  }
906
 
907
  if ($post_ID) {
908
  $postmodifiers->apply($post_ID);
 
909
  do_action('postie_post_after', $details);
910
  }
911
 
@@ -1579,6 +1596,7 @@ function tag_Delay(&$content, $message_date = NULL, $offset = 0) {
1579
  if ($delay == 0) {
1580
  $delayeddateInSeconds = clone $dateInSeconds;
1581
  }
 
1582
 
1583
  if ($offset > 0) {
1584
  $corrected_date = $delayeddateInSeconds->add(new DateInterval('PT' . $offset . 'H'));
@@ -1589,6 +1607,7 @@ function tag_Delay(&$content, $message_date = NULL, $offset = 0) {
1589
  if ($offset == 0) {
1590
  $corrected_date = clone $delayeddateInSeconds;
1591
  }
 
1592
 
1593
  DebugEcho("tag_Delay: message date: " . $dateInSeconds->format(DATE_RFC2822));
1594
  DebugEcho("tag_Delay: delay: $delay");
@@ -1657,6 +1676,7 @@ function postie_media_handle_upload($attachment, $post_id) {
1657
  if (!is_wp_error($id)) {
1658
  $mediapath = get_attached_file($id);
1659
  $file_array['tmp_name'] = $mediapath;
 
1660
  do_action('postie_file_added', $post_id, $id, $file_array);
1661
  } else {
1662
  EchoError("There was an error adding the attachement: " . $id->get_error_message());
@@ -1694,15 +1714,17 @@ function postie_email_notify($email, $recipients, $postid) {
1694
  if (count($recipients) == 0) {
1695
  DebugEcho("postie_email_notify: no recipients after postie_email_notify_recipients filter");
1696
  return;
 
 
 
1697
  }
1698
  $subject = "Successfully posted to $blogname";
1699
  $subject = apply_filters('postie_email_notify_subject', $subject, $email, $postid);
 
1700
 
1701
  $mailtext = apply_filters('postie_email_notify_body', $mailtext, $email, $postid);
 
1702
 
1703
- DebugEcho("postie_email_notify: To:");
1704
- DebugDump($recipients);
1705
- DebugEcho("postie_email_notify: $subject\n$mailtext");
1706
 
1707
  wp_mail($recipients, $subject, $mailtext, $sendheaders);
1708
  }
@@ -1751,12 +1773,17 @@ function postie_email_reject($email, $recipients, $returnToSender) {
1751
  if (count($recipients) == 0) {
1752
  DebugEcho("postie_email_reject: no recipients after postie_email_reject_recipients filter");
1753
  return;
 
 
 
1754
  }
1755
 
1756
  $subject = $blogname . ": Unauthorized Post Attempt from $from";
1757
  $subject = apply_filters('postie_email_reject_subject', $subject, $email);
 
1758
 
1759
  $message = apply_filters('postie_email_reject_body', $message, $email);
 
1760
 
1761
  $attachTxt = wp_tempnam() . '.txt';
1762
  file_put_contents($attachTxt, $email['text']);
@@ -2084,7 +2111,7 @@ function filter_ReplaceImagePlaceHolders_worker($content, &$attachment, $imagePa
2084
  DebugEcho("filter_ReplaceImagePlaceHolders_worker: captioned template: $imageTemplate");
2085
 
2086
  $imageTemplate = apply_filters('postie_place_media', $imageTemplate, $attachment['wp_id']);
2087
- DebugEcho("filter_ReplaceImagePlaceHolders_worker: post filter: '$imageTemplate'");
2088
 
2089
  $content = str_ireplace($match[0], $imageTemplate, $content);
2090
  DebugEcho("filter_ReplaceImagePlaceHolders_worker: post replace: $content");
@@ -2222,7 +2249,7 @@ function tag_Categories(&$subject, $defaultCategoryId, $config, $post_id) {
2222
  DebugEcho("tag_Categories: default not found");
2223
  }
2224
  $trial_category = apply_filters('postie_category', trim($match), $category_match, $defaultcat_name);
2225
- DebugEcho("tag_Categories: post filter: $trial_category");
2226
 
2227
  $categoryid = postie_lookup_category_id($trial_category, $category_match);
2228
  if (!empty($categoryid)) {
@@ -2308,26 +2335,6 @@ function postie_lookup_category_id($trial_category, $category_match = true) {
2308
  return intval($found_category); //force to integer
2309
  }
2310
 
2311
- /**
2312
- * This function just outputs a simple html report about what is being posted in
2313
- */
2314
- function postie_show_post_details($details) {
2315
- //DebugDump($details);
2316
- // Report
2317
- DebugEcho('Post Author: ' . $details['post_author']);
2318
- DebugEcho('Date: ' . $details['post_date']);
2319
- foreach ($details['post_category'] as $category) {
2320
- DebugEcho('Category: ' . $category);
2321
- }
2322
- DebugEcho('Ping Status: ' . $details['ping_status']);
2323
- DebugEcho('Comment Status: ' . $details['comment_status']);
2324
- DebugEcho('Subject: ' . $details['post_title']);
2325
- DebugEcho('Postname: ' . $details['post_name']);
2326
- DebugEcho('Post Id: ' . $details['ID']);
2327
- DebugEcho('Post Type: ' . $details['post_type']); /* Added by Raam Dev <raam@raamdev.com> */
2328
- //DebugEcho('Posted content: '.$details["post_content"]);
2329
- }
2330
-
2331
  /**
2332
  * Takes a value and builds a simple simple yes/no select box
2333
  * @param string
@@ -3130,6 +3137,7 @@ function postie_get_mail() {
3130
  DebugEcho('Starting mail fetch');
3131
  DebugEcho('WordPress datetime: ' . current_time('mysql'));
3132
 
 
3133
  do_action('postie_session_start');
3134
 
3135
  postie_environment();
@@ -3206,6 +3214,7 @@ function postie_get_mail() {
3206
  flush();
3207
  }
3208
  DebugEcho("Mail fetch complete, $message_number emails");
 
3209
  do_action('postie_session_end');
3210
 
3211
  if (function_exists('memory_get_usage')) {
1
  <?php
2
  /*
3
+ $Id: postie-functions.php 1639971 2017-04-18 17:02:24Z WayneAllen $
4
  */
5
 
6
  class PostiePostModifiers {
255
  } else {
256
  $template = $attachment['template'];
257
  if ($config['images_append']) {
258
+ DebugEcho("filter_AttachmentTemplates: pre postie_place_media_after");
259
  $template = apply_filters('postie_place_media_after', $template, $attachment['wp_id']);
260
  } else {
261
+ DebugEcho("filter_AttachmentTemplates: pre postie_place_media_before");
262
  $template = apply_filters('postie_place_media_before', $template, $attachment['wp_id']);
263
  }
264
  $template = mb_str_replace('{CAPTION}', '', $template);
281
  } else {
282
  $template = $attachment['template'];
283
  if ($config['images_append']) {
284
+ DebugEcho("filter_AttachmentTemplates: pre postie_place_media_after");
285
  $template = apply_filters('postie_place_media_after', $template, $attachment['wp_id']);
286
  } else {
287
+ DebugEcho("filter_AttachmentTemplates: pre postie_place_media_before");
288
  $template = apply_filters('postie_place_media_before', $template, $attachment['wp_id']);
289
  }
290
  $template = mb_str_replace('{CAPTION}', '', $template);
339
  DebugEcho("filter_AttachmentTemplates: Auto gallery: link type $linktype");
340
  postie_show_filters_for('postie_gallery');
341
  if ($linktype == 'default') {
342
+ DebugEcho("filter_AttachmentTemplates: pre postie_gallery (default)");
343
  $imageTemplate = apply_filters('postie_gallery', '[gallery]', $post_id);
344
  } else {
345
+ DebugEcho("filter_AttachmentTemplates: pre postie_gallery ($linktype)");
346
  $imageTemplate = apply_filters('postie_gallery', "[gallery link='$linktype']", $post_id);
347
  }
348
  DebugEcho("filter_AttachmentTemplates: Auto gallery: template '$imageTemplate'");
500
  }
501
 
502
  if ($delay > 0 && $post_status == 'publish') {
503
+ DebugEcho("publish in future");
504
  $post_status = 'future';
505
  }
506
 
582
  $tmpPost = array('post_title' => 'tmptitle', 'post_content' => 'tmpPost', 'post_status' => 'draft');
583
  $post_id = wp_insert_post($tmpPost, true);
584
  if (!is_wp_error($post_id)) {
585
+ DebugEcho("PostEmail: tmp post id is $post_id");
586
 
587
  $is_reply = false;
588
  $postmodifiers = new PostiePostModifiers();
589
 
590
+ DebugEcho("PostEmail: pre postie_post_pre");
591
  $mimeDecodedEmail = apply_filters('postie_post_pre', $mimeDecodedEmail);
592
 
593
  $details = postie_create_post($poster, $mimeDecodedEmail, $post_id, $is_reply, $config, $postmodifiers);
595
  $details = apply_filters('postie_post', $details);
596
  $details = apply_filters('postie_post_before', $details, $mimeDecodedEmail['headers']);
597
 
598
+ DebugEcho("PostEmail: Post postie_post_before filter");
599
  DebugDump($details);
600
 
601
  if (empty($details)) {
607
  EchoError("postie_post filter cleared the post, not saving.");
608
  }
609
  } else {
 
 
610
  $postid = postie_save_post($details, $is_reply, $config['custom_image_field'], $postmodifiers);
611
 
612
  if ($config['confirmation_email'] != '') {
620
  }
621
  postie_email_notify($mimeDecodedEmail, $recipients, $postid);
622
  }
623
+ if (IsDebugMode()) {
624
+ $post = get_post($post_id);
625
+ DebugEcho("PostEmail: resulting post");
626
+ DebugDump($post);
627
+ }
628
  }
629
  } else {
630
+ EchoError("PostEmail: wp_insert_post failed: " . $post_id->get_error_message());
631
  DebugDump($post_id->get_error_messages());
632
  DebugDump($post_id->get_error_data());
633
  postie_notify_error("PostEmail wp_insert_post failed creating placeholder", $post_id->get_error_message());
911
  'user_id' => $details['user_ID']
912
  );
913
  $comment = apply_filters('postie_comment_before', $comment);
914
+ DebugEcho("postie_save_post: post postie_comment_before");
915
+ DebugDump($comment);
916
+
917
  $post_ID = wp_new_comment($comment);
918
+
919
+ DebugEcho("doing postie_comment_after");
920
  do_action('postie_comment_after', $comment);
921
  }
922
 
923
  if ($post_ID) {
924
  $postmodifiers->apply($post_ID);
925
+ DebugEcho("doing postie_post_after");
926
  do_action('postie_post_after', $details);
927
  }
928
 
1596
  if ($delay == 0) {
1597
  $delayeddateInSeconds = clone $dateInSeconds;
1598
  }
1599
+ $delayeddateInSeconds->setTimezone(new DateTimeZone($tzs));
1600
 
1601
  if ($offset > 0) {
1602
  $corrected_date = $delayeddateInSeconds->add(new DateInterval('PT' . $offset . 'H'));
1607
  if ($offset == 0) {
1608
  $corrected_date = clone $delayeddateInSeconds;
1609
  }
1610
+ $corrected_date->setTimezone(new DateTimeZone($tzs));
1611
 
1612
  DebugEcho("tag_Delay: message date: " . $dateInSeconds->format(DATE_RFC2822));
1613
  DebugEcho("tag_Delay: delay: $delay");
1676
  if (!is_wp_error($id)) {
1677
  $mediapath = get_attached_file($id);
1678
  $file_array['tmp_name'] = $mediapath;
1679
+ DebugEcho("doing postie_file_added");
1680
  do_action('postie_file_added', $post_id, $id, $file_array);
1681
  } else {
1682
  EchoError("There was an error adding the attachement: " . $id->get_error_message());
1714
  if (count($recipients) == 0) {
1715
  DebugEcho("postie_email_notify: no recipients after postie_email_notify_recipients filter");
1716
  return;
1717
+ } else {
1718
+ DebugEcho("postie_email_notify: post postie_email_notify_recipients");
1719
+ DebugDump($recipients);
1720
  }
1721
  $subject = "Successfully posted to $blogname";
1722
  $subject = apply_filters('postie_email_notify_subject', $subject, $email, $postid);
1723
+ DebugEcho("postie_email_notify: post postie_email_notify_subject: $subject");
1724
 
1725
  $mailtext = apply_filters('postie_email_notify_body', $mailtext, $email, $postid);
1726
+ DebugEcho("postie_email_notify: post postie_email_notify_body: $mailtext");
1727
 
 
 
 
1728
 
1729
  wp_mail($recipients, $subject, $mailtext, $sendheaders);
1730
  }
1773
  if (count($recipients) == 0) {
1774
  DebugEcho("postie_email_reject: no recipients after postie_email_reject_recipients filter");
1775
  return;
1776
+ } else {
1777
+ DebugEcho("postie_email_reject: post postie_email_reject_recipients");
1778
+ DebugDump($recipients);
1779
  }
1780
 
1781
  $subject = $blogname . ": Unauthorized Post Attempt from $from";
1782
  $subject = apply_filters('postie_email_reject_subject', $subject, $email);
1783
+ DebugEcho("postie_email_reject: post postie_email_reject_subject: $subject");
1784
 
1785
  $message = apply_filters('postie_email_reject_body', $message, $email);
1786
+ DebugEcho("postie_email_reject: post postie_email_reject_body: $message");
1787
 
1788
  $attachTxt = wp_tempnam() . '.txt';
1789
  file_put_contents($attachTxt, $email['text']);
2111
  DebugEcho("filter_ReplaceImagePlaceHolders_worker: captioned template: $imageTemplate");
2112
 
2113
  $imageTemplate = apply_filters('postie_place_media', $imageTemplate, $attachment['wp_id']);
2114
+ DebugEcho("filter_ReplaceImagePlaceHolders_worker: post postie_place_media: '$imageTemplate'");
2115
 
2116
  $content = str_ireplace($match[0], $imageTemplate, $content);
2117
  DebugEcho("filter_ReplaceImagePlaceHolders_worker: post replace: $content");
2249
  DebugEcho("tag_Categories: default not found");
2250
  }
2251
  $trial_category = apply_filters('postie_category', trim($match), $category_match, $defaultcat_name);
2252
+ DebugEcho("tag_Categories: post postie_category: $trial_category");
2253
 
2254
  $categoryid = postie_lookup_category_id($trial_category, $category_match);
2255
  if (!empty($categoryid)) {
2335
  return intval($found_category); //force to integer
2336
  }
2337
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2338
  /**
2339
  * Takes a value and builds a simple simple yes/no select box
2340
  * @param string
3137
  DebugEcho('Starting mail fetch');
3138
  DebugEcho('WordPress datetime: ' . current_time('mysql'));
3139
 
3140
+ DebugEcho("doing postie_session_start");
3141
  do_action('postie_session_start');
3142
 
3143
  postie_environment();
3214
  flush();
3215
  }
3216
  DebugEcho("Mail fetch complete, $message_number emails");
3217
+ DebugEcho("doing postie_session_end");
3218
  do_action('postie_session_end');
3219
 
3220
  if (function_exists('memory_get_usage')) {
postie.php CHANGED
@@ -4,7 +4,7 @@
4
  Plugin Name: Postie
5
  Plugin URI: http://PostiePlugin.com/
6
  Description: Create posts via email. Significantly upgrades the Post by Email features of WordPress.
7
- Version: 1.8.38
8
  Author: Wayne Allen
9
  Author URI: http://PostiePlugin.com/
10
  License: GPL2
@@ -28,7 +28,7 @@
28
  */
29
 
30
  /*
31
- $Id: postie.php 1631197 2017-04-06 15:35:38Z WayneAllen $
32
  */
33
  require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . "lib/fException.php");
34
  require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . "lib/fUnexpectedException.php");
@@ -60,7 +60,7 @@ if (!function_exists('file_get_html')) {
60
  require_once (plugin_dir_path(__FILE__) . 'simple_html_dom.php');
61
  }
62
 
63
- define('POSTIE_VERSION', '1.8.38');
64
  define("POSTIE_ROOT", dirname(__FILE__));
65
  define("POSTIE_URL", WP_PLUGIN_URL . '/' . basename(dirname(__FILE__)));
66
 
4
  Plugin Name: Postie
5
  Plugin URI: http://PostiePlugin.com/
6
  Description: Create posts via email. Significantly upgrades the Post by Email features of WordPress.
7
+ Version: 1.8.39
8
  Author: Wayne Allen
9
  Author URI: http://PostiePlugin.com/
10
  License: GPL2
28
  */
29
 
30
  /*
31
+ $Id: postie.php 1639972 2017-04-18 17:04:13Z WayneAllen $
32
  */
33
  require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . "lib/fException.php");
34
  require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . "lib/fUnexpectedException.php");
60
  require_once (plugin_dir_path(__FILE__) . 'simple_html_dom.php');
61
  }
62
 
63
+ define('POSTIE_VERSION', '1.8.39');
64
  define("POSTIE_ROOT", dirname(__FILE__));
65
  define("POSTIE_URL", WP_PLUGIN_URL . '/' . basename(dirname(__FILE__)));
66
 
readme.txt CHANGED
@@ -6,7 +6,7 @@ Plugin URI: http://PostiePlugin.com/
6
  Tags: e-mail, email, post-by-email
7
  Requires at least: 3.3.0
8
  Tested up to: 4.7.3
9
- Stable tag: 1.8.38
10
  License: GPLv2 or later
11
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
12
 
@@ -242,6 +242,10 @@ All script, style and body tags are stripped from html emails.
242
  Attachments are now processed in the order they were attached.
243
 
244
  == CHANGELOG ==
 
 
 
 
245
  = 1.8.38 (2017-04-06) =
246
  * Update postie_notify_error to be less noisy.
247
 
6
  Tags: e-mail, email, post-by-email
7
  Requires at least: 3.3.0
8
  Tested up to: 4.7.3
9
+ Stable tag: 1.8.39
10
  License: GPLv2 or later
11
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
12
 
242
  Attachments are now processed in the order they were attached.
243
 
244
  == CHANGELOG ==
245
+ = 1.8.39 (2017-04-18) =
246
+ * Ensure the time zone is set when calculating the post time.
247
+ * Additional debug output
248
+
249
  = 1.8.38 (2017-04-06) =
250
  * Update postie_notify_error to be less noisy.
251