http://www.perlmonks.org?node_id=829333


in reply to Re: Email::Mime Errors
in thread Email::Mime and Multiple Recipients

I tried the Loop as you said, but i'm recieving the following error. Single recipient is still working with previous method. But with the loop even the single recipient is not working.

Error sending email: Email::Send::Gmail: error sending 'to' at /Library/Perl/5.10.0/Email/Send.pm line 252

at /Library/Perl/5.10.0/Email/Send.pm line 252

I tried it as follows :

#!/usr/bin/perl use warnings; use LWP::Simple; use Email::Send; use Email::Send::Gmail; use Email::MIME::Creator; use IO::All; my $basefolder = "/Users/Abc/Desktop/"; my $from = "abc1\@gmail.com"; my $subject = "DAILY SOCIAL MEDIA SEARCH"; for my $to ( 'abc3\@gmail.com', 'abc2\@hotmail.com'){ my @parts = ( Email::MIME->create( attributes => { filename =>"M-B.csv", content_type =>"application/csv", disposition =>"attachment", Name =>$basefolder . "M-B.csv", }, body => io( $basefolder . "M-B.csv" )->all, ), ); my $email = Email::MIME->create( header => [ From => $from, To => $to, Subject => $subject, ], parts => [@parts] ); my $sender = Email::Send->new( { mailer => 'Gmail', mailer_args => [ username => 'abc1\@gmail.com', password => '1234qwerty', ] } ); eval { $sender->send($email) }; die "Error sending email: $@" if $@; }

Something must be wrong with my for loop application. Kindly point it out.

Replies are listed 'Best First'.
Re^3: Email::Mime Errors
by almut (Canon) on Mar 18, 2010 at 14:43 UTC
    for my $to ( 'abc3\@gmail.com', 'abc2\@hotmail.com'){

    When you use single quotes for literal strings, you don't want the backslash before @ (the backslash will remain part of the string).

    my $from = "abc1\@gmail.com"; # double quotes my $to = 'abc3\@gmail.com'; # single quotes print "from: $from"; print "to: $to"; __END__ from: abc1@gmail.com to: abc3\@gmail.com # !!

    Those addresses are Email::Send::Gmail-internally being extracted from the To/Cc/Bcc headers using Email::Address->parse(), which doesn't identify something like abc3\@gmail.com as a valid address, so the final list of recipients is empty — as the error message is trying to tell you.

    #!/usr/bin/perl -l use Email::Address; @addresses = Email::Address->parse('abc3@gmail.com'); print "ok : @addresses"; @addresses = Email::Address->parse('abc3\@gmail.com'); print "not ok : @addresses"; __END__ ok : abc3@gmail.com not ok :
Re^3: Email::Mime Errors
by Anonymous Monk on Mar 18, 2010 at 07:24 UTC
    I tried the Loop as you said, but i'm still recieving the following error.

    That doesn't make sense, you said you were able to send email before.