#!/usr/bin/perl -w ####################################################################### # Adapted from GO-absproof # ####################################################################### use CGI qw/:standard :html -no_xhtml/; use CGI::Carp qw(warningsToBrowser fatalsToBrowser); use Net::SMTP; use strict; my $query = new CGI; my $vals = $query->Vars; my @errs; if (! $vals->{contactName} || $vals->{contactName} !~ /\S+/) { push @errs, "Please include a contact name."; } if (! $vals->{contactEmail} || $vals->{contactEmail} !~ /\S+/ || $vals->{contactEmail} !~ /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/) { push @errs, "Please check that your email address is entered correctly."; } if (! $vals->{contactText} || $vals->{contactText} !~ /\S+/) { push @errs, "Please include a message."; } if (! $vals->{contactTopic} || $vals->{contactTopic} !~ /\S+/) { # just fill in the topic as general $vals->{contactTopic} = 'general'; } if (@errs) { &dienice(\@errs); } if ( $vals->{contactName} eq $vals->{contactEmail} && $vals->{contactName} eq $vals->{contactText} ) { start(); print h2("Success!"); print p("Thanks for contacting the Gene Ontology."); end(); exit; } sendmail($vals); start(); print h2("Success!"); print p("Your message has been successfully sent to the Gene Ontology helpdesk, and you have been emailed a copy for your records. Thank you for contacting the Gene Ontology; your query will be answered soon."); print p("Return to the GO website"); end(); exit; ################################################################## sub readFile { open(FH, $_[0]) or die "Can't open file $_[0]!"; my @data = ; close FH; return @data; } sub sendmail { my $params = shift; $ENV{PATH} = "/usr/lib"; my $titles = { annot => 'Annotation', ont => 'Ontology', sw => 'Software', tools => 'Tools', general => 'General query', errors => 'Error', }; my $sub = $titles->{ $params->{contactTopic} } || "General query"; # send the message to the list # open (MAILGOHELP , "| /bin/mail -s 'GO Help query (from website)' -f " . $params->{contactEmail} . " go-helpdesk\@geneontology.org") || die "Could not open mailer\n"; open (MAILGOHELP , "| /bin/mail -s 'GO Help query (from website)' go-helpdesk\@geneontology.org -- -f " . $params->{contactEmail}) || die "Could not open mailer\n"; print MAILGOHELP "\nEmail: " . $params->{contactEmail} . "\nName: $sub (from " . $params->{contactName} . ")\nText: " . $params->{contactText} . "\n"; close(MAILGOHELP); open (MAILUSER , "| /bin/mailx -s '$sub (from " . $params->{contactName} . ")' " . $params->{contactEmail} . " -- -f " . $params->{contactEmail}) || die "Could not open mailer\n"; print MAILUSER "\nEmail: " . $params->{contactEmail} . "\nName: $sub (from " . $params->{contactName} . ")\nText: " . $params->{contactText} . "\n"; close(MAILUSER); #testing open (MAILGOHELP , "| /bin/mail -s 'GO Help query (from website)' cherry\@stanford.edu -- -f " . $params->{contactEmail}) || die "Could not open mailer\n"; print MAILGOHELP "\nEmail: " . $params->{contactEmail} . "\nName: $sub (from " . $params->{contactName} . ")\nText: " . $params->{contactText} . "\n"; close(MAILGOHELP); #testing } sub dienice { my $errs = shift; $errs = [ $errs ] if ! ref $errs; start(); print h2("Error"); print p("Your message could not be delivered. Please correct the following details and resubmit it."); print ul( li($errs) ); print p("Please use your browser's BACK button to return to the form and submit the correct data."); end(); exit; } sub start { my @head = readFile("../html/header.html"); # my @head = readFile('/Users/gwg/go/www/header.html'); print header, start_html(-head => meta({-http_equiv => 'Content-Type', -content => 'text/html; charset=iso-8859-1'}), -style => { -src =>'http://www.geneontology.org/stylesheets/stylesheet.css'}, -title => 'Query Submission Results'); print $_ foreach (@head); print '
', h1('Query Submission Results'), '
'; } sub end { print '
'; my @foot = readFile("../html/footer.shtml"); # my @foot = readFile('/Users/gwg/go/www/footer.shtml'); print $_ foreach (@foot); print end_html; }