#!/usr/bin/perl -w # # $Id: send_emails,v 1.18 2004/12/05 00:04:17 dgregor Exp $ # # Copyright (c) 2000-2002 Daniel J. Gregor, Jr. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # - Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # - Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # use strict; use Getopt::Std; use IO::File; use Text::CSV_XS 0.23; use Net::SMTP 2.19; use POSIX qw(strftime); use Time::Local; # # These are all of the global variables that are used # use vars qw($max_tries $progname $usage @mailhosts $mailcur %mailobjs); use vars qw($dryrun $verbose $debug $template_file $rate $status_csv); use vars qw($message_template $status_file $status_csv $status_fh $input_csv); use vars qw(@template_fields @status_fields %already_sent $last_smtp_warn); use vars qw($address_warning $delivery_warning $time_offset $fqdn); init_variables(); parse_opts(); read_template_file(); open_all_smtp_connections(); init_input_csv(); init_status_csv(); send_emails(); close_all_smtp_connections(); if ($address_warning) { exit 1; } if ($delivery_warning) { exit 2; } sub init_variables { $max_tries = 5; $progname = "send_emails"; $usage = <] [-m ] \ [-H ] [-s ] -t