diff -r 000000000000 -r 83f4b4db085c bldsystemtools/commonbldutils/record_delivery.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bldsystemtools/commonbldutils/record_delivery.pm Tue Feb 02 01:39:43 2010 +0200 @@ -0,0 +1,159 @@ +package record_delivery; + +=head1 NAME + +Record delivery + +=head1 SYNOPSIS + +record_delivery.pl + +=head1 DESCRIPTION + +This module is designed to send an email for the purpose of recording deliveries. + +=head1 COPYRIGHT + +Copyright (c) 2005 Symbian Ltd. All rights reserved + +=cut + +=over 4 + +=item * Template Notes + +The basic rules of the template for creating a delivery record are:- +The replacement sections as per HTML::Template module rules. +%% is a seperator +Spelling and case of words is critical +General line format is:- Field name in Delivery record document%%Field value%% +No line returns will be transferred to the delivery record document +"Responsible Person" can only be a single person. +"Symbian Contact" and "Additional Email List" can be multiple people seperated by a semicolon (;) +"Consignee Name" and "Contract Identifier" are values chosen from the deliveries database +No empty fields are allowed, to simulate an empty field use a single space +All the fields shown in the example must be present. + +e.g +Title%% CBR Delivery to Kshema%% +Export Controlled%%Yes%% +Reason Why Not Exported%% %% +Consignee Name%%Kshema Technologies%% +Contract Identifier%%N/A system Test 07/08/2003%% +Recipient Email%%Andrew.Beck@Symbian.com%% +Recipient Project%% %% +Additional Email List%% %% +Symbian Contact%%Monika Lewandowski; Denis Lyons%% +Responsible Person%%Monika Lewandowski%% +Source/Archive Location%%\\builds01\ODCBuilds\CBR_Archive_%% +Notification Email text%%This is a test 2 of auto delivery recording%% +Delivery Notes%%GT_Techview_Baseline Version %% + +=back + +=over 4 + +=item * Other Notes + +An email will be sent back to the from_address value if the creation of the +record delivery document fails. + +=cut + +use 5.6.1; +use strict; +use warnings; + +use Exporter; +use vars qw ($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS @EXPORT_FAIL); +@ISA = ('Exporter'); +@EXPORT = qw(new send); +@EXPORT_FAIL = qw (); +%EXPORT_TAGS = ( ':all' =>[qw/new send/] ); +$VERSION = '0.1'; + +use Carp; +use Net::SMTP; +use Sys::Hostname; +use HTML::Template; + +sub new +{ + my ($class) = shift; + our %args = @_; + my $self = {}; + bless $self, $class; + + # Use config file if defined + if (defined $args{'config_file'}) + { + # populate %args from file + do $args{'config_file'}; + } + + # if from address is not set then the from is the machine name + if(!defined($args{'from_address'})) + { + $self->{'from_address'} = hostname; + } else { + $self->{'from_address'} = $args{'from_address'}; + } + + # if to address is not set then confess + if(!defined($args{'to_address'})) + { + confess "ERROR: Sending email, no To: address defined"; + } else { + $self->{'to_address'} = $args{'to_address'}; + } + + # if to smtp_server is not set then set it to the local machine + if(!defined($args{'smtp_server'})) + { + $self->{'smtp_server'} = hostname; + } else { + $self->{'smtp_server'} = $args{'smtp_server'}; + } + + + return $self; +} + +sub send +{ + + my $self = shift; + + my %args = @_; + + # Create the Template and allow supplied params not to exist in the template + my $email = new HTML::Template(filename => $args{'Template'}, die_on_bad_params => 0); + # Delete the template filename from the %args hash so a generic loop can be + # used for other Template Variables where the key is the same as TMPL_VAR NAME + delete $args{'Template'}; + + #Complete Template + foreach my $key (keys %args) + { + $email->param($key => $args{$key}); + } + + + my (@message); + + push @message,"From: $self->{'from_address'}\n"; + push @message,"To: $self->{'to_address'}\n"; + push @message,"Subject: Auto Import\n"; + push @message,"\n"; + push @message,$email->output(); + + my $smtp = Net::SMTP->new($self->{'smtp_server'}, Hello => hostname, Debug => 0); + $smtp->mail(); + $smtp->to($self->{'to_address'}); + + $smtp->data(@message) or confess "ERROR: Sending email"; + $smtp->quit; + +} + +1;