bldsystemtools/commonbldutils/record_delivery.pm
changeset 0 83f4b4db085c
--- /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%%<TMPL_VAR NAME=BuildNumber> 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_<TMPL_VAR NAME=BuildShortName>%%
+Notification Email text%%This is a test 2 of auto delivery recording%%
+Delivery Notes%%GT_Techview_Baseline Version <TMPL_VAR NAME=BuildNumber and GT_Only_Baseline Version <TMPL_VAR NAME=BuildNumber>%%
+
+=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;