in reply to Re: Mail::Sender trouble
in thread Mail::Sender trouble

Here is my code. Like I said, this is my first stabb at something usefull, actually my first time period. The print statement that is printing all of the variables before they are passed to the subroutine is there just so that I could see what was actually being passed on to the sub. The "address.mail" file is a flat, array type file with one entry per line. Here it is:
#!/usr/gnu/bin/perl -w use Mail::Sender; $mail = "address.mail"; # flat file passed from another program if (-e $mail) { open (FILE,$mail); @mailf = <FILE>; close FILE; $addr = $mailf[0]; # assigning mail variables $subj = $mailf[1]; # in the order that they $from = $mailf[2]; # are in the file $body = $mailf[3]; $attach = $mailf[4]; print "$addr\n $subj\n $from\n $body\n $attach\n"; sender_mail($addr,$subj,$body,$attach); } } sub sender_mail { ref ($sender = new Mail::Sender ({ from => '$addr', smtp => 'my.mailhub.com'})) # have to + be carfull with the hostname. || die "Mail::Sender::Error, $!"; (ref ($sender->MailFile( {to =>"$addr", subject =>"$subj", msg =>"$body", file +=> "$attach"}))) }

Edit: chipmunk 2001-06-05

Replies are listed 'Best First'.
Re: Re: Re: Mail::Sender trouble
by bikeNomad (Priest) on Jun 06, 2001 at 00:11 UTC
    You should put <code> tags around it. Anyway, you're reading the file into @mailf, but each of the lines have newlines at the end. Including your filename. Instead, you may want to do this:

    open(FILE, $mail); @mailf = map { chomp; $_ } <FILE>; close(FILE); # now process $mail[n]

    update: fixed map. Actually you could just go:

    @mailf = <FILE>; chomp(@mailf);
      When I tried that I got 1's for the printing of the input strings. Should this be??? Also did not receive the mail. Sorry about the code thing... I'll get used to it I think. I have a feeling I'll be visiting here often. Dalin
      That worked! Thank you. But... don't you love the butt's??? The variables are being taken literally and I get "$addr@hostname.com". and the file names where there should be the files themselves instead. I am doing something wrong here??? (Well, obviously I am.) Thanks again. Dalin
        Watch your quotes. I see you have '$addr' somewhere. The single quotes prevent $addr from being interpreted. You don't need to use quotes at all to use the contents of a variable. You can just say $addr rather than "$addr"; and don't use '$addr' if you want the value of the variable to be used. As far as the filenames instead of the files, well, you may have to read the contents of the files; I don't know about the API of Mail::Sender.