diff -r 2f6f6f7551ca -r 32102edaa81b web/wp-mail.php --- a/web/wp-mail.php Thu Sep 16 15:45:36 2010 +0000 +++ b/web/wp-mail.php Mon Nov 19 18:26:13 2012 +0100 @@ -10,6 +10,9 @@ /** Make sure that the WordPress bootstrap has run before continuing. */ require(dirname(__FILE__) . '/wp-load.php'); +if ( ! apply_filters( 'enable_post_by_email_configuration', true ) ) + wp_die( __( 'This action has been disabled by the administrator.' ) ); + /** Allow a plugin to do a complete takeover of Post by Email **/ do_action('wp-mail.php'); @@ -32,13 +35,18 @@ $phone_delim = '::'; $pop3 = new POP3(); -$count = 0; + +if ( !$pop3->connect( get_option('mailserver_url'), get_option('mailserver_port') ) || !$pop3->user( get_option('mailserver_login') ) ) + wp_die( esc_html( $pop3->ERROR ) ); + +$count = $pop3->pass( get_option('mailserver_pass') ); -if ( ! $pop3->connect(get_option('mailserver_url'), get_option('mailserver_port') ) || - ! $pop3->user(get_option('mailserver_login')) || - ( ! $count = $pop3->pass(get_option('mailserver_pass')) ) ) { - $pop3->quit(); - wp_die( ( 0 === $count ) ? __('There doesn’t seem to be any new mail.') : esc_html($pop3->ERROR) ); +if( false === $count ) + wp_die( esc_html( $pop3->ERROR ) ); + +if( 0 === $count ) { + $pop3->quit(); + wp_die( __('There doesn’t seem to be any new mail.') ); } for ( $i = 1; $i <= $count; $i++ ) { @@ -97,7 +105,7 @@ // Set the author using the email address (From or Reply-To, the last used) // otherwise use the site admin - if ( preg_match('/(From|Reply-To): /', $line) ) { + if ( ! $author_found && preg_match( '/^(From|Reply-To): /', $line ) ) { if ( preg_match('|[a-z0-9_.-]+@[a-z0-9_.-]+(?!.*<)|i', $line, $matches) ) $author = $matches[0]; else @@ -105,15 +113,11 @@ $author = sanitize_email($author); if ( is_email($author) ) { echo '

' . sprintf(__('Author is %s'), $author) . '

'; - $userdata = get_user_by_email($author); - if ( empty($userdata) ) { - $author_found = false; - } else { + $userdata = get_user_by('email', $author); + if ( ! empty( $userdata ) ) { $post_author = $userdata->ID; $author_found = true; } - } else { - $author_found = false; } } @@ -153,7 +157,7 @@ $user = new WP_User($post_author); $post_status = ( $user->has_cap('publish_posts') ) ? 'publish' : 'pending'; } else { - // Author not found in DB, set status to pending. Author already set to admin. + // Author not found in DB, set status to pending. Author already set to admin. $post_status = 'pending'; } @@ -218,11 +222,9 @@ $pop3->reset(); exit; } else { - echo '

' . sprintf(__('Mission complete. Message %s deleted.'), $i) . '

'; + echo '

' . sprintf(__('Mission complete. Message %s deleted.'), $i) . '

'; } } $pop3->quit(); - -?>