Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Mailallusers

by erickfqunam (Initiate)
on Dec 03, 2002 at 00:57 UTC ( [id://217096]=sourcecode: print w/replies, xml ) Need Help??
Category: e-mail programs
Author/Contact Info erick sanchez erick@xenon.pquim.unam.mx http://perlmonks.org/index.pl?node_id=217092
Description: A little script that i made to send an e-mail to all users in /etc/passwd, i made this to learn more about perl and Mail::Sendmail module
#!/usr/bin/perl -w
use strict;
use Mail::Sendmail;
my %mail;

open(FILE, "/etc/passwd");

while(<FILE>){   
    chomp;
    @_ = split/:/;
    
    if ($_[3] >100){
        print "Testing Mail::Sendmail version $Mail::Sendmail::VERSION
+\n";
        print "Default server: $Mail::Sendmail::mailcfg{smtp}->[0]\n";
        print "Default sender: $Mail::Sendmail::mailcfg{from}\n";
        
     %mail = (
           To      => "$_[0]".'@xenon.pquim.unam.mx',
      # To      => 'erick@xenon.pquim.unam.mx',
           From    => 'root@xenon.pquim.unam.mx',
      #Bcc     => 'Someone <him@there.com>, Someone else her@there.com
+',
      # only addresses are extracted from Bcc, real names disregarded
      #Cc      => 'Yet someone else <xz@whatever.com>',
      # Cc will appear in the header. (Bcc will not)
      Subject => 'Administracion de litio',
      'X-Mailer' => "Mail::Sendmail version $Mail::Sendmail::VERSION",
  );

  $mail{Smtp} = 'localhost';
  $mail{'X-custom'} = 'My custom additionnal header';
  $mail{'Message : '} = "Este correo es para avisar que si reciben cor
+reo \"spam\", este puede ser cancelado, como una atencion al usuario.
+  Me puedes enviar un correo especificando la direccion de donde te l
+lega el spam el cual sera marcado como {SPAM} en cuanto llegue o si e
+ste esta marcado como {SPAM} y \"NO LO ES\" hazmelo saber de la misma
+ manera para evitar su eliminacion posterior.  atte. erick";
  # cheat on the date:
  $mail{Date} = Mail::Sendmail::time_to_date( time() - 86400 );

  if (sendmail %mail) { print "Mail sent OK.\n" }
  else { print "Error sending mail: $Mail::Sendmail::error \n" }

  print "\n\$Mail::Sendmail::log says:\n", $Mail::Sendmail::log;

#print "$_[0] \n"; 
}
}
close FILE;
Replies are listed 'Best First'.
•Re: Mailallusers
by merlyn (Sage) on Dec 03, 2002 at 15:54 UTC
    Instead of parsing the passwd file (which would be incorrect if you're using NIS, for example), use the getpwent functions:
    while (my @p = getpwent) { my ($user, $uid) = @p[0,1]; next if $uid < 100; .. rest of your loop .. }

    -- Randal L. Schwartz, Perl hacker
    Be sure to read my standard disclaimer if this is a reply.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: sourcecode [id://217096]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (3)
As of 2024-04-20 01:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found