Perl script: 'test_page_send_email.cgi'

----

NOTE: This is a copy of the script used to email a diagnostic report from a Shibboleth authentication to ProQuest Technical Support. If using this as an example for your own script, please add your own email address(es) where appropriate. The email is sent using the '/bin/mailx' utility on a Solaris server. This will need to be amended to suit the email system on your own server.


 #!/usr/local/bin/perl -w

 #  Send an email from the Shibboleth authentication test page
 #
 #  ---------------------------------------------------------------------
 #  Script:    /opt/shibboleth/apache2.2/cgi-bin/test_page_send_email.cgi
 #  Author:    Geoff Leach
 #  Date:      October 2007
 #  Copyright:  2007 ProQuest LLC
 #  ---------------------------------------------------------------------
 #
 #  Parameters to this script are:
 #
 #    REPORT             Text of the 'Shibboleth authentication report'
 #                       displayed on the test page.
 #
 #    LOCATION           Server location: UK, US or DEV
 #
 #    NAME, EMAIL,       Details of the user sending the email, as entered
 #    INSTITUTION,       into the form fields on the test page.
 #    COMMENTS
 #
 use strict;

 use CGI;

 main();

 sub main
 {
     #  Obtain the CGI parameters
     my $report      = CGI::param( "REPORT" ) || "";
     my $location    = CGI::param( "LOCATION" ) || "";
     my $name        = CGI::param( "NAME" ) || "";
     my $email       = CGI::param( "EMAIL" ) || "";
     my $institution = CGI::param( "INSTITUTION" ) || "";
     my $comments    = CGI::param( "COMMENTS" ) || "";

     #  Email address for ProQuest Technical Support
     my $pqemail = "your.email@your.server";

     #  Return address for undelivered emails
     my $retaddr = "your.email@your.server";

     #  Form the subject line for the email
     my $subject = "Shibboleth authentication report for " .
                   "'$name' of '$institution'";
     #  Escape any quotes so as not to confuse the shell
     $subject =~ s/"/''/g;

     #  Form the body of the email
     my $body =
         "Name:           $name \n" .
         "\n" .
         "Email address:  $email \n" .
         "\n" .
         "Institution:    $institution \n" .
         "\n" .
         "Comments: \n" .
         ( "-" x 76 ) . "\n" .
         $comments . "\n" .
         ( "-" x 76 ) . "\n" .
         "\n" .
         "Shibboleth authentication report: \n" .
         ( "-" x 76 ) . "\n" .
         $report . "\n" .
         ( "-" x 76 ) . "\n" .
         "\n";

     #  Send the email
     my $mailcmd = "/bin/mailx -r $retaddr -c $email -s \"$subject\" $pqemail";

     open( EMAIL, "| $mailcmd" );

     print EMAIL $body;

     close( EMAIL );

     #  Output a confirmation page

     print CGI->header( -type => "text/html" );

     my $title = "Test Page for Shibboleth Authentication - $location Server";

     print "<head>\n" .
           "<title>$title</title>\n" .
           "</head>\n";

     print "<body>\n" .
           "<h2>$title</h2>\n";

     print "<p>Thank you.</p>\n" .
           "<p>Your email has been sent to ProQuest Technical Support, " .
           "and a copy has been sent to your email address '$email'.</p>\n";

     print "</body>\n" .
           "</html>\n";

     exit( 0 );
 }