Display emails of users who already posted at least once

You can place following code in your functions.php file & use the shortcode [myblogwriters min_posts="1"] anywhere in the page/post content and can also change the min_posts value 🙂

function show_min_one_post_writers($atts){

    global $wpdb;

    $attrs = shortcode_atts( array(
            'min_posts' => ''
        ), $atts );

    $min_posts = $attrs['min_posts'];

    $authors = $wpdb->get_col("SELECT `post_author` FROM
    (SELECT `post_author`, COUNT(*) AS `count` FROM {$wpdb->posts}
    WHERE `post_status`='publish' GROUP BY `post_author`) AS `stats`
    WHERE `count` >= {$min_posts} ORDER BY `count` DESC;");

    $my_blog_writers = "";

    if ( empty ($authors) ) {
        return "<p>No one has contirbuted any post yet!</p>";
    } else {
        foreach ($authors as $author_id) {
            $my_writer = get_userdata($author_id);
            $my_blog_writers .= "<p>".$my_writer->first_name ." ".$my_writer->last_name ." : ". $my_writer->user_email."</p>";
        }
        return $my_blog_writers;
    }    
}
add_shortcode( 'myblogwriters', 'show_min_one_post_writers' );