Hi Ryan!

Do yourself a big favor and use warnings and strict:

    #!/usr/bin/perl -w

    use strict;

If you had done that you would immediately have spotted the problem, which was a missing dollar sign for the rcpts element in the line:

    >   $email->recipient(@{ rcpts{$server} });

Should be:

    $email->recipient(@{ $rcpts{$server} });

I believe this is just a typing error.  Good luck!


Gretar M. Hreggvidsson
[EMAIL PROTECTED]


Ryan Frantz wrote:
Perlers,

I need to send an email to several different recipients, all at
different mail servers.  I thought that a hash of arrays (my first time)
would do the job nicely, but Net::SMTP complains that I can't "coerce
array into hash".

Here's my script (Win32):

# hash the recipients -> a hash of arrays!!  woohoo!

my %rcpts = (
  'mail.domain0.com' => [ '[EMAIL PROTECTED]', '[EMAIL PROTECTED]' ],
  'mail.domain1.com' => [ '[EMAIL PROTECTED]' ],
  'mail.domain2.com' => [ '[EMAIL PROTECTED]' ]
);

my $send_from = '[EMAIL PROTECTED]';
my $send_to   = "Interested Parties"
my $subj      = "Something happened...";
my $msg       = "...and it's going to cost us...";

# test the HoA...

foreach my $server ( keys %rcpts ) {

  #print "$server: @{ $rcpts{$server} } \n";

  #my $email = Net::SMTP->new($server, Hello => $site, Debug => 5) or
warn "Unable to create email: $!\n";

  my $email = Net::SMTP->new($informed_smtp_host, Hello => $site) or
warn "Unable to create email: $!\n";

  $email->mail($send_from);
  $email->recipient(@{ rcpts{$server} });
  $email->data();
  $email->datasend("To: $send_to\n");
  $email->datasend("Subject: $subj\n");
  $email->datasend($msg);
  $email->dataend();
  $email->quit;
}



--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to