X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/ff81ee6e8304a1982a3ec4f5b134764a29d502cf..69ac90aac5f1f0c980444b182c6d03659fbc7e7a:/wp-mail.php
diff --git a/wp-mail.php b/wp-mail.php
index 6c62fbad..ab9ae845 100644
--- a/wp-mail.php
+++ b/wp-mail.php
@@ -5,19 +5,17 @@ require_once(ABSPATH.WPINC.'/class-pop3.php');
error_reporting(2037);
-$time_difference = get_settings('gmt_offset') * 3600;
+$time_difference = get_option('gmt_offset') * 3600;
$phone_delim = '::';
$pop3 = new POP3();
-if (!$pop3->connect(get_settings('mailserver_url'), get_settings('mailserver_port'))) :
- echo "Ooops $pop3->ERROR
\n";
- exit;
-endif;
+if (!$pop3->connect(get_option('mailserver_url'), get_option('mailserver_port')))
+ wp_die(wp_specialchars($pop3->ERROR));
-$count = $pop3->login(get_settings('mailserver_login'), get_settings('mailserver_pass'));
-if (0 == $count) die(__('There doesn’t seem to be any new mail.'));
+$count = $pop3->login(get_option('mailserver_login'), get_option('mailserver_pass'));
+if (0 == $count) wp_die(__('There doesn’t seem to be any new mail.'));
for ($i=1; $i <= $count; $i++) :
@@ -26,10 +24,10 @@ for ($i=1; $i <= $count; $i++) :
$content = '';
$content_type = '';
+ $content_transfer_encoding = '';
$boundary = '';
$bodysignal = 0;
- $dmonths = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
- 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
+ $dmonths = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
foreach ($message as $line) :
if (strlen($line) < 3) $bodysignal = 1;
@@ -42,6 +40,12 @@ for ($i=1; $i <= $count; $i++) :
$content_type = explode(';', $content_type);
$content_type = $content_type[0];
}
+ if (preg_match('/Content-Transfer-Encoding: /i', $line)) {
+ $content_transfer_encoding = trim($line);
+ $content_transfer_encoding = substr($content_transfer_encoding, 27, strlen($content_transfer_encoding)-14);
+ $content_transfer_encoding = explode(';', $content_transfer_encoding);
+ $content_transfer_encoding = $content_transfer_encoding[0];
+ }
if (($content_type == 'multipart/alternative') && (preg_match('/boundary="/', $line)) && ($boundary == '')) {
$boundary = trim($line);
$boundary = explode('"', $boundary);
@@ -56,21 +60,24 @@ for ($i=1; $i <= $count; $i++) :
$subject = $subject[0];
}
- // Set the author using the email address (To or Reply-To, the last used)
+ // Set the author using the email address (From or Reply-To, the last used)
// otherwise use the site admin
- if (preg_match('/From: /', $line) | preg_match('Reply-To: /', $line)) {
- $author=trim($line);
- if ( ereg("([a-zA-Z0-9\_\-\.]+@[\a-zA-z0-9\_\-\.]+)", $author , $regs) ) {
- $author = $regs[1];
- echo "Author = {$author}
"; - $author = $wpdb->escape($author); - $result = $wpdb->get_row("SELECT ID FROM $wpdb->users WHERE user_email='$author' LIMIT 1"); - if (!$result) - $post_author = 1; + if ( preg_match('/(From|Reply-To): /', $line) ) { + if ( preg_match('|[a-z0-9_.-]+@[a-z0-9_.-]+(?!.*<)|i', $line, $matches) ) + $author = $matches[0]; else - $post_author = $result->ID; - } else - $post_author = 1; + $author = trim($line); + $author = sanitize_email($author); + if ( is_email($author) ) { + echo "Author = {$author}
"; + $author = $wpdb->escape($author); + $result = $wpdb->get_row("SELECT ID FROM $wpdb->users WHERE user_email='$author' LIMIT 1"); + if (!$result) + $post_author = 1; + else + $post_author = $result->ID; + } else + $post_author = 1; } if (preg_match('/Date: /i', $line)) { // of the form '20 Mar 2002 20:32:37' @@ -81,11 +88,11 @@ for ($i=1; $i <= $count; $i++) : } $date_arr = explode(' ', $ddate); $date_time = explode(':', $date_arr[3]); - + $ddate_H = $date_time[0]; $ddate_i = $date_time[1]; $ddate_s = $date_time[2]; - + $ddate_m = $date_arr[1]; $ddate_d = $date_arr[0]; $ddate_Y = $date_arr[2]; @@ -104,7 +111,7 @@ for ($i=1; $i <= $count; $i++) : } endforeach; - $subject = trim(str_replace(get_settings('subjectprefix'), '', $subject)); + $subject = trim($subject); if ($content_type == 'multipart/alternative') { $content = explode('--'.$boundary, $content); @@ -113,13 +120,15 @@ for ($i=1; $i <= $count; $i++) : $content = strip_tags($content[1], '
Content-type: $content_type, boundary: $boundary Raw content: Author: $post_author Posted title: $post_title Author: " . wp_specialchars($post_author) . " Posted title: " . wp_specialchars($post_title) . " Oops '.$pop3->ERROR.' Oops '.wp_specialchars($pop3->ERROR).'".$content.'
';
-
$content = trim($content);
$post_content = apply_filters('phone_content', $content);
@@ -128,7 +137,7 @@ for ($i=1; $i <= $count; $i++) :
if ($post_title == '') $post_title = $subject;
- if (empty($post_categories)) $post_categories[] = get_settings('default_email_category');
+ if (empty($post_categories)) $post_categories[] = get_option('default_email_category');
$post_category = $post_categories;
@@ -139,6 +148,8 @@ for ($i=1; $i <= $count; $i++) :
$post_data = add_magic_quotes($post_data);
$post_ID = wp_insert_post($post_data);
+ if ( is_wp_error( $post_ID ) )
+ echo "\n" . $post_ID->get_error_message();
if (!$post_ID) {
// we couldn't post, for whatever reason. better move forward to the next email
@@ -147,12 +158,11 @@ for ($i=1; $i <= $count; $i++) :
do_action('publish_phone', $post_ID);
- echo "\n
";
- echo "\nPosted content:".$content.'
';
+ echo "\n
";
if(!$pop3->delete($i)) {
- echo '