Web mail script

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • trend5

    Web mail script

    I have a simple mail script designed to use from command line.
    I want create a simple web interface to use this script as remotely
    hosted webscript, from webhost.
    The script contains two files- Data File.dat(which holds the list of
    email addresses, where the mail has to be sent;
    the addresses are separated by new lines); and Message template
    File.template(t his file contains the message template to be sent.)
    Need some help and advices.
    thanks
    ------------------------

    #!/usr/bin/perl -w

    #user configuration begin#

    $mailprg = "/usr/sbin/sendmail"; #path to your mail program
    $delay = 0.25; #delay in seconds
    $from = 'Coname<somenam e@domain.com>'; #from address in your mail
    $subject = 'Trial send'; #subject of newsletter. u can add the spl
    code $USERNAME$
    $maildata = "mail.dat"; #mail address file
    $msgtemplate = "message.templa te"; #message template file

    #user configuration end#

    if(@ARGV){
    $i = 0;
    while($ARGV[$i]){
    if($ARGV[$i] eq "--help"){
    print "Command Line Options:\n\n";
    print "-t\tTest how the message will be formatted\n";
    print "-d\tData file listing the email addresses\n";
    print "-m\tMessage template file\n";
    print "-s\tSubject\n";
    print "-f\tFrom address. Quote for security reasons\n";
    die "\nMore information at indiWiz.com\n";
    }
    elsif($ARGV[$i]=~/^-/){
    $arr = substr($ARGV[$i],1,1);
    if($arr eq "d"){
    $maildata = $ARGV[$i+1];
    $i+=2;
    }
    elsif($arr eq "m"){
    $msgtemplate = $ARGV[$i+1];
    $i+=2;
    }
    elsif($arr eq "t"){
    $testflag = 1;
    $i++;
    }
    elsif($arr eq "s"){
    $subject = $ARGV[$i+1];
    $i+=2;
    }
    elsif($arr eq "f"){
    $from = $ARGV[$i+1];
    $i+=2;
    }
    else{
    die "Wrong argument!";
    }
    }
    }
    }

    open TEMPLATE, $msgtemplate || die "Cannot open template file!\n";
    while(<TEMPLATE >){
    $msg .= $_;
    }
    close TEMPLATE || die "Cannot close template file!\n";

    open MAILFILE,"$mail data" || die "Cannot open data file!\n";
    while(<MAILFILE >){
    chomp($_);
    @arr = split(/\@/,$_);
    $arr[0] = ucfirst($arr[0]);
    $tmp = $msg;
    $tmp =~ s/\$USERNAME\$/$arr[0]/g;
    $subject =~ s/\$USERNAME\$/$arr[0]/g;
    $temp = "To: $arr[0]<$_>\n";
    $temp .= "From: $from\n";
    $temp .= "Subject: $subject\n\n\n" ;
    $temp .= $tmp;
    if($testflag){
    print $temp;
    last;
    }
    else{
    open MAILPRG,"|$mail prg -t" || die "Cannot open mail program!\n";
    print MAILPRG $temp;
    close MAILPRG || die "Cannot close mailprogram!\n" ;
    if($delay < 0){
    $delay = 1;
    sleep $delay;
    }
    elsif($delay < 1){
    select(undef,un def,undef,$dela y);
    }
    else{
    sleep $delay;
    }
    print $_,"\n";
    }
    }
    close MAILFILE || die "Cannot close data file!\n";
  • Joe Smith

    #2
    Re: Web mail script

    trend5 wrote:
    [color=blue]
    > Need some help and advices.[/color]

    What advice are you asking for? Your post did not show
    1) what the program generated when you ran it
    2) what you expected it to do.
    [color=blue]
    > if(@ARGV){
    > $i = 0;
    > while($ARGV[$i]){
    > if($ARGV[$i] eq "--help"){ print;print;pri nt }
    > elsif($ARGV[$i]=~/^-/){
    > $arr = substr($ARGV[$i],1,1);
    > if ($arr eq "d"){$maild ata = $ARGV[$i+1]; $i+=2;}
    > elsif($arr eq "m"){$msgtempla te = $ARGV[$i+1]; $i+=2;}
    > elsif($arr eq "t"){$testf lag = 1; $i++;}
    > elsif($arr eq "s"){$subje ct = $ARGV[$i+1]; $i+=2;}
    > elsif($arr eq "f"){$from = $ARGV[$i+1]; $i+=2;}
    > else{ die "Wrong argument!"; }
    > }
    > }
    > }[/color]

    That's a mighty ugly bunch of C code there.
    When creating Perl programs, you should program in Perl, not C.

    my $Usage = <<EOM;
    Command Line Options:
    -t Test how the message will be formatted
    -d Data file listing the email addresses
    -m Message template file
    -s Subject
    -f From address. Quote for security reasons

    More information at indiWiz.com
    EOM
    if (@ARGV and $ARGV[0] =~ /^-/) {
    $_ = shift;
    die $Usage if $_ eq '--help';
    my $opt = substr $_,1,1;
    if ($opt eq "d") { $maildata = shift; }
    elsif ($opt eq "m") { $msgtemplate = shift; }
    elsif ($opt eq "t") { $testflag = 1; }
    elsif ($opt eq "s") { $subject = shift; }
    elsif ($opt eq "f") { $from = shift; }
    else { die "Invalid option '$_'\n",$Usage; }
    }
    die "Unexpected command line arguments '@ARGV'\n",$Usa ge if @ARGV;
    [color=blue]
    > open TEMPLATE, $msgtemplate || die "Cannot open template file!\n";[/color]

    open TEMPLATE, $msgtemplate or
    die "Cannot open template file $msgtemplate - $!\n";
    [color=blue]
    > $subject =~ s/\$USERNAME\$/$arr[0]/g;[/color]

    That will work only once. You need to keep the original around.

    (my $newsubject = $subject) =~ s/\$USERNAME\$/$arr[0]/g;

    If you have any more questions, specific ones regarding perl, then
    post them to the comp.lang.perl. misc newsgroup.
    (comp.lang.perl is defunct; superceded by comp.lang.perl. misc)

    -Joe

    Comment

    • PC

      #3
      Re: Web mail script


      "Joe Smith" <joe@inwap.co m> wrote in message
      news:AdGdnf-e6ui87O3fRVn-pg@comcast.com. ..[color=blue]
      >
      > (comp.lang.perl is defunct; superceded by comp.lang.perl. misc)
      >[/color]

      Why?


      Comment

      • Joe Smith

        #4
        Re: Web mail script

        PC wrote:[color=blue]
        > "Joe Smith" <joe@inwap.co m> wrote in message
        > news:AdGdnf-e6ui87O3fRVn-pg@comcast.com. ..
        >[color=green]
        >>(comp.lang.pe rl is defunct; superceded by comp.lang.perl. misc)[/color]
        >
        > Why?[/color]

        The original comp.lang.perl was split into several new newsgroups.
        This was voted on many many years ago.
        There is a lot more traffic in comp.lang.perl. misc than comp.lang.perl .
        -Joe

        Comment

        Working...