]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-mail.php
Wordpress 2.3.3-scripts
[autoinstalls/wordpress.git] / wp-mail.php
index 6c62fbad6beaaa9b836fbc6050862a9321f6d388..ab9ae84585a263a4f20638461289259cbee1d510 100644 (file)
@@ -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 <br />\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&#8217;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&#8217;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} <p>";
-                               $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} <p>";
+                                       $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], '<img><p><br><i><b><u><em><strong><strike><font><span><div>');
        }
        $content = trim($content);
+
+       if (stripos($content_transfer_encoding, "quoted-printable") !== false) {
+               $content = quoted_printable_decode($content);
+       }
+
        // Captures any text in the body after $phone_delim as the body
        $content = explode($phone_delim, $content);
        $content[1] ? $content = $content[1] : $content = $content[0];
 
-       echo "<p><b>Content-type:</b> $content_type, <b>boundary:</b> $boundary</p>\n";
-       echo "<p><b>Raw content:</b><br /><pre>".$content.'</pre></p>';
-
        $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<p><b>Author:</b> $post_author</p>";
-       echo "\n<p><b>Posted title:</b> $post_title<br />";
-       echo "\n<b>Posted content:</b><br /><pre>".$content.'</pre></p>';
+       echo "\n<p><b>Author:</b> " . wp_specialchars($post_author) . "</p>";
+       echo "\n<p><b>Posted title:</b> " . wp_specialchars($post_title) . "<br />";
 
        if(!$pop3->delete($i)) {
-               echo '<p>Oops '.$pop3->ERROR.'</p></div>';
+               echo '<p>Oops '.wp_specialchars($pop3->ERROR).'</p></div>';
                $pop3->reset();
                exit;
        } else {
@@ -163,4 +173,4 @@ endfor;
 
 $pop3->quit();
 
-?>
\ No newline at end of file
+?>