The Community Forums

Interact with an entire community of cPanel & WHM users!
  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Extract emails

Discussion in 'E-mail Discussions' started by magin, Jul 13, 2006.

  1. magin

    magin Well-Known Member

    Joined:
    Sep 3, 2003
    Messages:
    45
    Likes Received:
    1
    Trophy Points:
    6
    how can i extract all emails addresses from my server i would like to send an email to all my users
     
  2. madaboutlinux

    madaboutlinux Well-Known Member

    Joined:
    Jan 24, 2005
    Messages:
    1,052
    Likes Received:
    2
    Trophy Points:
    38
    Location:
    Earth
    If you wish to send an email to all the users hosted on your server, you can do so from WHM >> Account Functions >> Email All Users. If you wish to send email to Resellers accounts as well, check the box "Send Email to Reseller's Customers".
     
  3. ChasTX

    ChasTX Registered

    Joined:
    Aug 21, 2003
    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    1
    Location:
    Austin, TX
    Send email to all users

    I realize that WHM has this function, but we'd like to build a local copy of all user emails to send them "pretty" HTML emails re: server upgrades, new offerings, etc.

    How can we get the list, rather than just send the email?
     
  4. randomuser

    randomuser Well-Known Member

    Joined:
    Jun 25, 2005
    Messages:
    147
    Likes Received:
    0
    Trophy Points:
    16
    User email addresses are stored in /home/username/.contactemail, IF the user has set their email address.


    for x in `ls /home` ; do strings /home/$x/.contactemail >> /some/path/to/outputfile ; done
     
  5. carlaron

    carlaron Well-Known Member

    Joined:
    Jun 26, 2003
    Messages:
    45
    Likes Received:
    0
    Trophy Points:
    6
    List ALL email users

    If you want to send an email to ALL your email users... not just to the contact emails (half of which are out of date or not monitored by anyone with half a brain)... Here is a command-line PHP script to list all mailbox accounts. I used this when I needed to tell ALL of my email users about my planned upgrade from mbox to maildir, so they would know why their mailboxes where unavailable for as much as several hours (depending on the number of mailboxes you have on your server), and that NeoMail would no longer be available.

    #!/usr/local/bin/php
    <?php
    $folderlist = `ls -d /home/*/mail/*/*`;
    $list_array = explode("\n",$folderlist);
    foreach($list_array as $folder){
    if(is_dir($folder)){
    $folder_array = explode("/",$folder);
    print $folder_array[5] . "@" . $folder_array[4] ."\n";
    }
    }
    ?>
     
  6. luxrok

    luxrok Member

    Joined:
    Sep 28, 2004
    Messages:
    5
    Likes Received:
    0
    Trophy Points:
    1
    AWK instead of PHP

    I tried the php script above and remembered my PHP is locked down, so I can't execute the system calls. So I wrote a little awk script to do the same thing. Please let me know if you see an improvement!

    I used the same logic found in the php script. Thanks for the inspiration to do something cool!

    Hans

    --------------------------------------------------------

    #!/bin/awk -f
    #
    # File: getAllEmail.awk
    #
    # This awk script takes the input of ls -d /home/*/mail/*/*
    # checks to see if the directory exists, then outputs the email address. My example
    # outputs them to a text file called emailaddress.txt
    #
    # I wrote it to get all the email addresses out of my cpanel box.
    # You are free to use this program for your own purposes. If you
    # improve it, please let me know. If it is horribly flawed, please let me know.
    #
    # Author: Hans C. Kaspersetz
    # Date: 10/27/2007
    # Email: hans [at] cyberxdesigns [dot] com
    #
    # Usage on cpaneli cli> ls -d /home/*/mail/*/*/ | getAllEmail.awk > emailaddress.txt

    BEGIN {
    }
    {
    tcmd = "test -d " $1
    if(!system(tcmd)){
    split($1,MyArray,"/")
    print MyArray[6] "@" MyArray[5]
    }
    }
     
Loading...

Share This Page