diff --git a/web/lib/mime_decode.ssjs b/web/lib/mime_decode.ssjs
index 78deab11feccfff35d86e620e9887b8a268cf43a..4d069c939d5cbedbee1df7e188e2097d377c2ace 100644
--- a/web/lib/mime_decode.ssjs
+++ b/web/lib/mime_decode.ssjs
@@ -21,6 +21,8 @@ function count_attachments(hdr, body)
 
 	if(CT.search(/multipart\/[^\s;]*/i)!=-1) {
 		var bound=CT.match(/;[\s\r\n]*boundary="{0,1}([^";\r\n]*)"{0,1}/i);
+		if(bound==undefined)
+			return(attach);
 		bound[1]=regex_escape(bound[1]);
 		re=new RegExp ("--"+bound[1]+"-{0,2}","");
 		msgbits=body.split(re);
@@ -64,61 +66,63 @@ function mime_decode(hdr, body)
 	}
 	if(CT.search(/multipart\/[^\s;]*/i)!=-1) {
 		var bound=CT.match(/;[\s\r\n]*boundary="{0,1}([^";\r\n]*)"{0,1}/i);
-		bound[1]=regex_escape(bound[1]);
-		re=new RegExp ("--"+bound[1]+"-{0,2}");
-		msgbits=body.split(re);
-		/* Search for attachments/inlined */
-		for(bit in msgbits) {
-			var pieces=msgbits[bit].split(/\r?\n\r?\n/);
-			var disp=pieces[0].match(/content-disposition:\s+(?:attachment|inline)[;\s]*filename="?([^";\r\n]*)"?/i);
-			if(disp!=undefined) {
-				/* Attachment */
-				if(Message.attachments==undefined)
-					Message.attachments=new Array;
-				Message.attachments.push(disp[1]);
-			}
-			disp=pieces[0].match(/content-id:\s+\<?([^\<\>;\r\n]*)\>?/i);
-			if(disp!=undefined) {
-				/* Inline Attachment */
-				if(Message.inlines==undefined)
-					Message.inlines=new Array;
-				Message.inlines.push(disp[1]);
+		if(bound!=undefined) {
+			bound[1]=regex_escape(bound[1]);
+			re=new RegExp ("--"+bound[1]+"-{0,2}");
+			msgbits=body.split(re);
+			/* Search for attachments/inlined */
+			for(bit in msgbits) {
+				var pieces=msgbits[bit].split(/\r?\n\r?\n/);
+				var disp=pieces[0].match(/content-disposition:\s+(?:attachment|inline)[;\s]*filename="?([^";\r\n]*)"?/i);
+				if(disp!=undefined) {
+					/* Attachment */
+					if(Message.attachments==undefined)
+						Message.attachments=new Array;
+					Message.attachments.push(disp[1]);
+				}
+				disp=pieces[0].match(/content-id:\s+\<?([^\<\>;\r\n]*)\>?/i);
+				if(disp!=undefined) {
+					/* Inline Attachment */
+					if(Message.inlines==undefined)
+						Message.inlines=new Array;
+					Message.inlines.push(disp[1]);
+				}
 			}
-		}
-		/* Search for HTML encoded bit */
-		for(bit in msgbits) {
-			var pieces=msgbits[bit].split(/(\r?\n\r?\n)/);
-			var pheads=pieces[0];
-			if(pheads==undefined)
-				continue;
-			var content=pieces.slice(2).join('');
-			if(content==undefined)
-				continue;
-			if(pheads.search(/content-type: text\/html/i)!=-1) {
-				Message.body=decode_body(TE,pheads,content);
-				if(Message.inlines!=undefined) {
-					for(il in Message.inlines) {
-						var path=http_request.virtual_path;
-						var basepath=path.match(/^(.*\/)[^\/]*$/);
-						re=new RegExp("cid:("+regex_escape(Message.inlines[il])+")","ig");
-						Message.body=Message.body.replace(re,basepath[1]+"inline.ssjs/"+template.group.number+"/"+template.sub.code+"/"+hdr.number+"/$1");
+			/* Search for HTML encoded bit */
+			for(bit in msgbits) {
+				var pieces=msgbits[bit].split(/(\r?\n\r?\n)/);
+				var pheads=pieces[0];
+				if(pheads==undefined)
+					continue;
+				var content=pieces.slice(2).join('');
+				if(content==undefined)
+					continue;
+				if(pheads.search(/content-type: text\/html/i)!=-1) {
+					Message.body=decode_body(TE,pheads,content);
+					if(Message.inlines!=undefined) {
+						for(il in Message.inlines) {
+							var path=http_request.virtual_path;
+							var basepath=path.match(/^(.*\/)[^\/]*$/);
+							re=new RegExp("cid:("+regex_escape(Message.inlines[il])+")","ig");
+							Message.body=Message.body.replace(re,basepath[1]+"inline.ssjs/"+template.group.number+"/"+template.sub.code+"/"+hdr.number+"/$1");
+						}
 					}
+					Message.type="html";
+					return(Message);
 				}
-				Message.type="html";
-				return(Message);
 			}
-		}
-		/* Search for plaintext bit */
-		for(bit in msgbits) {
-			var pieces=msgbits[bit].split(/(\r?\n\r?\n)/);
-			var pheads=pieces[0];
-			var content=pieces.slice(2).join('');
-			if(content==undefined)
-				continue;
-			if(pheads.search(/content-type: text\/plain/i)!=-1) {
-				Message.body=decode_body(TE,pheads,content);
-				Message.type="plain";
-				return(Message);
+			/* Search for plaintext bit */
+			for(bit in msgbits) {
+				var pieces=msgbits[bit].split(/(\r?\n\r?\n)/);
+				var pheads=pieces[0];
+				var content=pieces.slice(2).join('');
+				if(content==undefined)
+					continue;
+				if(pheads.search(/content-type: text\/plain/i)!=-1) {
+					Message.body=decode_body(TE,pheads,content);
+					Message.type="plain";
+					return(Message);
+				}
 			}
 		}
 	}
@@ -202,6 +206,8 @@ function mime_get_attach(hdr, body, filename)
 	}
 	if(CT.search(/multipart\/[^\s;]*/i)!=-1) {
 		var bound=CT.match(/;[\s\r\n]*boundary="{0,1}([^";\r\n]*)"{0,1}/i);
+		if(bound==undefined)
+			return(undefined);
 		bound[1]=regex_escape(bound[1]);
 		re=new RegExp ("--"+bound[1]+"-{0,2}");
 		msgbits=body.split(re);
@@ -244,6 +250,8 @@ function mime_get_cid_attach(hdr, body, cid)
 	}
 	if(CT.search(/multipart\/[^\s;]*/i)!=-1) {
 		var bound=CT.match(/;[\s\r\n]*boundary="{0,1}([^";\r\n]*)"{0,1}/i);
+		if(bound==undefined)
+			return(undefined);
 		bound[1]=regex_escape(bound[1]);
 		re=new RegExp ("--"+bound[1]+"-{0,2}");
 		msgbits=body.split(re);