[Mailman-Users] How to import a list of members?

Michael Kubler greyphoenixproductions at gmail.com
Fri Apr 25 17:18:58 CEST 2008


Wow, that beats my lazy way of doing it, which is simply a cron job 
which uses the *add_members* function to import a list of email 
addresses from a text file, that I have a PHP script 
<http://www.syjmovie.com> saving the addresses to.

Michael Kubler
*G*rey *P*hoenix *P*roductions <http://www.greyphoenix.biz>



Lynn, Michael (A&E) wrote:
> Not sure if this will help anyone - but I had a requirement to enable
> remote subscription from a command line.  I wrapped a call to cURL for
> this.
>
> --->8---
> #!/bin/bash
> # mlynn 03/28/2008
> # Wrap a call to curl to enable subscription to a mailman list
> #
> VERSION="0.1"
> MAILMANURL="http://lists.yourserver.com/mailman/subscribe"
> PROGRAM=`basename $0`
>
> function ERROR
> # Spew the wrongness
> {
>         echo "Error: Code $1"
>         echo "${2}?"
>         exit $1
> }
>
> function SYNTAX
> #
> # Tell the people how you communicate
> #
> {
>         echo "SYNTAX:"
>         echo "$PROGRAM $VERSION"
>         echo "  $PROGRAM [[email] [firstname] [lastname] [password]
> [listname]]"
>         echo "  This handy script will wrap a call to cURL for the
> purpose of subscribing"
>         echo "  a user to a mailman list.  If you fail to provide
> optional arguments, you"
>         echo "  will be prompted to enter them at the command line."
>         echo "           "
> }
>
> function CHECKCURL
> #
> # Check for commands you depend upon
> #
> {
>         CURL=`which curl`
>         if [ $? -ne 0 ]; then
>                 ERROR 1 "the command curl is missing from the system"
>         fi;
>
> }
>
> function GETARGS
> #
> # Get the arguments - duh.
> #
> {
>         if [ "$1" = "-h" -o "$1" = "--h" ]; then
>                 SYNTAX
>                 exit 0
>         fi
>         if [ -z $1 ]; then
>                 {
>                 echo "Enter email for user to be subscribed: "
>                 read EMAIL
>                 if [ -z $EMAIL ]; then
>                         ERROR 30 "You must enter a valid email address."
>                 fi
>                 }
>         else
>                 EMAIL=$1
>         fi
>         if [ -z $2 ]; then
>                 {
>                 echo "Enter the first name of the person to be
> subscribed: "
>                 read FIRSTNAME
>                 if [ -z $FIRSTNAME ]; then
>                         ERROR 30 "You the first name of the subscibee."
>                 fi
>                 }
>         else
>                 FIRSTNAME=$2
>         fi
>         if [ -z $3 ]; then
>                 {
>                 echo "Enter the last name of the person to be
> subscribed: "
>                 read LASTNAME
>                 if [ -z $LASTNAME ]; then
>                         ERROR 30 "You the last name of the subscibee."
>                 fi
>                 }
>         else
>                 LASTNAME=$3
>         fi
>         if [ -z $4 ]; then
>                 {
>                 echo "Enter the list access password for this user: "
>                 read PW
>                 if [ -z $PW ]; then
>                         ERROR 30 "You must enter a password for $EMAIL."
>                 fi
>                 }
>         else
>                 PW=$4
>         fi
>         if [ -z $5 ]; then
>                 {
>                 echo "Enter the list name to subscribe $EMAIL to: "
>                 read LIST
>                 if [ -z $LIST ]; then
>                         ERROR 30 "You must enter a valid listname."
>                 fi
>                 }
>         else
>                 LIST=$5
>         fi
> }
>
> function DOCURL
> # Build the cURL call
> {
>
>         # urlencode the email '@'
>         UEMAIL=`echo $EMAIL | sed "s/\@/\%40/g"`
>         CMD="curl -s
> $MAILMANURL/${LIST}?email=${UEMAIL}&fullname=$FIRSTNAME%20$LASTNAME&pw=$
> PW&pw-conf=$PW&digest=0&email-button=Submit"
>         OUT=`${CMD}`
>         if `echo ${OUT} | grep -i "no such list"` ; then
>                 {
>                         ERROR 30 "List $LIST not found.  Please check
> and try again."
>                 }
>         else
>                 {
>                         echo "List subscription for the following user
> appears to have worked."
>                         echo "Email:     $EMAIL"
>                         echo "Full Name: $FIRSTNAME $LASTNAME"
>                         echo "The user should recieve an email
> requesting confirmation for this subscription."
>                         exit 0
>                 }
>         fi
>
> }
>
>
> CHECKCURL
> GETARGS $1 $2 $3 $4 $5
> DOCURL
> ---8<----


More information about the Mailman-Users mailing list