diff --git a/web/root/formmail.ssjs b/web/root/formmail.ssjs
index a43e00cae311c4ede8b58fcf796719f6a89e940f..e1e5dba83d8ebb9c08b5c3f5b7ad02d5b5b4e7f0 100644
--- a/web/root/formmail.ssjs
+++ b/web/root/formmail.ssjs
@@ -7,23 +7,51 @@
 
 load("sbbsdefs.js");
 
-if(http_request.query.to==undefined
-    || http_request.query.from==undefined
-    || http_request.query.subject==undefined) {
-	writeln(log(LOG_ERR,"!ERROR: mising query field"));
-	exit();
-}
+var redir = http_request.query.redir;
+if(!redir)
+	redir = http_request.header.referer;
+
+function results(level, text)
+{
+	log(level,text);
+	writeln("<html>");
+	writeln("<head>");
+	writeln("<title>Sending e-mail</title>");
 
-if(http_request.post_data==undefined) {
-	writeln(log(LOG_ERR,"!ERROR: mising post data"));
+	if(level>LOG_WARNING) {
+		writeln('<meta http-equiv="Pragma" content="no-cache">');
+		writeln('<meta http-equiv="expires" content="0">');
+		writeln('<meta http-equiv="refresh" content="3; URL=' 
+			+ redir +'">');
+	}
+	writeln("</head>");
+
+	writeln("<body>");
+	writeln("<center>");
+	if(level<=LOG_WARNING) {
+		writeln("!ERROR: ");
+	}
+	writeln(text);
+	if(level>LOG_WARNING) {
+		writeln("<p>");
+		writeln("Returning to <i>" + redir + "</i>");
+	}
+	writeln("</body>");
+	writeln("</html>");
 	exit();
 }
 
+if(http_request.query.to==undefined
+    || http_request.query.from==undefined
+    || http_request.query.subject==undefined)
+	results(LOG_ERR,"mising query field");
+
+if(http_request.post_data==undefined)
+	results(LOG_ERR,"mising post data");
+
 var msgbase=new MsgBase("mail");
-if(!msgbase.open()) {
-	writeln(log(LOG_ERR,format("!ERROR %s opening mail base", msgbase.error)));
-	exit();
-}
+if(!msgbase.open())
+	results(LOG_ERR,format("%s opening mail base", msgbase.error));
 
 var hdr = { from: http_request.query.from,
 			to: http_request.query.to,
@@ -34,17 +62,12 @@ if(hdr.to_net_type!=NET_NONE)
 	hdr.to_net_addr=hdr.to;
 else {
 	var usrnum=system.matchuser(hdr.to);
-	if(usrnum==0) {
-		writeln(log(LOG_ERR,"!Bad local username specified: " + hdr.to));
-		exit();
-	}
+	if(usrnum==0)
+		results(LOG_ERR,"bad local username specified: " + hdr.to);
 	hdr.to_ext=usrnum;
 }
 
-
 if(!msgbase.save_msg(hdr,client,http_request.post_data))
-	writeln(log(LOG_ERR,format("!ERROR %s saving message", msgbase.error)));
-else
-	writeln(log(LOG_INFO,"E-mail sent to " + hdr.to + " successfully"));
+	results(LOG_ERR,format("%s saving message", msgbase.error));
 
-msgbase.close();
+results(LOG_INFO,"E-mail sent to <i>" + hdr.to + "</i> successfully.");