mail is now template based
authorHeiko Schlittermann (JUMPER) <hs@schlittermann.de>
Mon, 04 Jul 2011 17:26:13 +0200
changeset 7 c89c297e5d53
parent 6 641140d445ca
child 8 562be4ad4e6d
child 10 fd14fab1744d
mail is now template based
.perltidyrc
index.cgi
templates/mail.confirm.tpl
templates/mail.confirmed.tpl
templates/mail.foot
templates/mail.head
templates/mail.invitation.tpl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.perltidyrc	Mon Jul 04 17:26:13 2011 +0200
@@ -0,0 +1,2 @@
+--paren-tightness=2
+--square-bracket-tightness=2
--- a/index.cgi	Mon Jul 04 16:27:02 2011 +0200
+++ b/index.cgi	Mon Jul 04 17:26:13 2011 +0200
@@ -18,17 +18,17 @@
 
 sub insert(\%);
 sub confirm($$);
-sub slurp($);
+sub read_conf($);
 
 
 delete @ENV{grep /PATH$/ => keys %ENV};
 $ENV{PATH} = "/usr/bin:/usr/sbin:/bin:/sbin";
 
 my $DSN = "DBI:SQLite:var/db.sqlite3";
-my $SECRET = slurp "conf/secret";   chomp($SECRET);
-my $SELF = slurp "conf/self";       chomp($SELF);
-my $SUBJECT = slurp "conf/subject"; chomp($SUBJECT);
+my $SECRET = read_conf "conf/secret";   chomp($SECRET);
+my $SELF = read_conf "conf/self";       chomp($SELF);
 my $EXPIRATION = 60;		    # the link is valid for XX minutes only
+my $SENDMAIL = "/usr/sbin/sendmail -t";
 my %FIELDS = (
     MAN => [qw[givenname surname mail]],
     OPT => [qw[tel]]
@@ -37,9 +37,6 @@
 my %ttconfig = (
     INCLUDE_PATH => "templates",
     DEBUG => 1,
-    VARIABLES => {
-	MAILTO => "hs+retter\@schlittermann.de"
-    },
 );
 
 my $DBH = DBI->connect($DSN, undef, undef, {RaiseError=>1});
@@ -75,14 +72,15 @@
 		$xxx =~ s/\//_/g;
 
 		# send mail
-		sendmail(To => scalar(param("mail")),
-		         From => "hs+retter\@schlittermann.de",
-			 Sender => "hs\@schlittermann.de",
-			 Subject => "$SUBJECT Link zur Online-Anmeldung",
-			 Message => "Bitte benutze den folgenden Link, um zum Anmeldeformular zu gelangen:\n"
-			    . "$SELF/$xxx.tmp\n"
-			    . "\n-- \nHeiko Schlittermann\n");
-		    
+		open(my $sendmail => "|$SENDMAIL")
+		    or die "Can't open sendmail: $!\n";
+
+		$tt->process("mail.invitation.tpl", {
+		    to   => scalar(param("mail")),
+		    url  => "$SELF/$xxx.tmp"}, $sendmail)
+		or die $tt->error();
+		close($sendmail);
+
 		$sent = param("mail");
 	    }
 	}
@@ -121,6 +119,14 @@
 	my $confirmed = param("confirm") eq "yes";
 	my %data = confirm($uuid => $confirmed);
 
+	open(my $sendmail, "|$SENDMAIL") or die "Can't open $SENDMAIL: $!\n";
+	$tt->process("mail.confirmed.tpl", {
+	    to => $data{mail},
+	    confirmed => $confirmed,
+	}, $sendmail)
+	or die $tt->error();
+	close($sendmail);
+
 	$tt->process("confirm.tpl", {
 	    confirmed => $confirmed,
 	    error => delete $data{error},
@@ -171,24 +177,21 @@
 
 	if (!%warn) {
 	    my %r = insert(%value);
-	    sendmail(To => $value{mail},
-		     From => "hs\@schlittermann.de",
-		     "Content-Type" => "text/plain; charset=\"UTF-8\"",
-		     Subject => "$SUBJECT Bitte die Anmeldung bestaetigen.",
-		     Message => <<_EOF);
 
-Bitte bestaetige Deine Anmeldung. Dazu mußt Du folgenden Link in Deinem
-Browser oeffnen:
+	    open(my $sendmail => "|$SENDMAIL")
+		or die "Can't open $SENDMAIL: $!\n";
 
-$SELF/$r{uuid}.user?confirm=yes
+	    $tt->process("mail.confirm.tpl", {
+		to => $value{mail},
+		url => {
+		    yes => "$SELF/$r{uuid}.user?confirm=yes",
+		    no  => "$SELF/$r{uuid}.user?confirm=no",
+		}
+	    }, $sendmail)
+	    or die $tt->error();
 
-Wenn alles nur ein Irrtum war, dann kannst Du Deine Daten wieder
-AUSTRAGEN und wir vergessen Deine Anmeldung. Hier ist der Link zum
-AUSTRAGEN:
+	    close($sendmail);
 
-$SELF/$r{uuid}.user?confirm=no
-
-_EOF
 	    $tt->process("form.ack.tpl", {
 		value => \%value,
 		timestamp => $r{timestamp},
@@ -265,31 +268,10 @@
 	
     $DBH->commit;
 
-    if ($confirmed) {
-	sendmail(
-	    To => $data{mail},
-	    From => "hs+retter\@schlittermann.de",
-	    Subject => "$SUBJECT Bestaetigung der Anmeldung",
-	    Message => <<_EOF);
-Du bist erfolgreich angemeldet. Fuer weitere Fragen kontaktiere bitte
-hs+retter\@schlittermann.de.
-_EOF
-    }
-    else {
-	sendmail(
-	    To => $data{mail},
-	    From => "hs+retter\@schlittermann.de",
-	    Subject => "$SUBJECT Bestaetigung der NICHT-Anmeldung",
-	    Message => <<_EOF);
-Wir vergessen Deine Anmeldung. Fuer weitere Fragen kontaktiere bitte
-hs+retter\@schlittermann.de.
-_EOF
-    }
-
     return %data;
 }
 
-sub slurp($) {
+sub read_conf($) {
     open(my $_, $_[0]) or die "Can't open $_[0]: $!\n";
     local $/ = undef;
     s/^#.*//mg;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/mail.confirm.tpl	Mon Jul 04 17:26:13 2011 +0200
@@ -0,0 +1,17 @@
+From: hs+retter@schlittermann.de
+To: [%to%]
+Subject: [Retter packen] Bitte bestaetige Deine Anmeldung
+[%INCLUDE "mail.head"-%]
+
+Bitte bestätige Deine Anmeldung. Dazu mußt Du folgenden Link in Deinem
+Browser öffnen
+
+[%url.yes%]
+
+Wenn alles nur ein Irrtum war, dann kannst Du Deine Daten wieder
+AUSTRAGEN und wir vergessen Deine Anmeldung. Hier ist der Link zum
+AUSTRAGEN:
+
+[%url.no%]
+
+[%INCLUDE "mail.foot"%]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/mail.confirmed.tpl	Mon Jul 04 17:26:13 2011 +0200
@@ -0,0 +1,16 @@
+From: hs+retter@schlittermann.de
+To: [%to%]
+Subject: [Retter packen] Bestaetigung Deiner Anmeldung
+[%INCLUDE "mail.head"-%]
+
+[%IF confirmed-%]
+Du bist jetzt erfolgreich für den Retter-Packkurs angemeldet. Bei
+weiteren Fragen kontaktiere uns bitte per Mail oder auch telefonisch
+unter 0172 7909055.
+
+Bitte vergiß nicht, den Betrag von 50€ zu überweisen.
+[%ELSE%]
+Du bist *nicht* zum Retterpackkurs angemeldet. Alle Deine uns bekannten
+Daten wurden wieder gelöscht.
+[%END%]
+[%INCLUDE "mail.foot"%]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/mail.foot	Mon Jul 04 17:26:13 2011 +0200
@@ -0,0 +1,2 @@
+-- 
+Heiko Schlittermann <hs+retter@schlittermann.de> (+49.172.7909055)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/mail.head	Mon Jul 04 17:26:13 2011 +0200
@@ -0,0 +1,1 @@
+Content-Type: text/plain; charset=UTF-8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/mail.invitation.tpl	Mon Jul 04 17:26:13 2011 +0200
@@ -0,0 +1,10 @@
+From: hs+retter@schlittermann.de
+To: [%to%]
+Subject: [Retter packen] Link zur Online-Anmeldung
+[%INCLUDE "mail.head"-%]
+
+Bitte benutze folgende URL, um Dich für den Kurs zum Retter-Packen anzumelden:
+
+[%url%]
+
+[%INCLUDE "mail.foot"%]