diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c
index 889fdf74da97a49abc268432bf0d11908738b328..ee1beab7fd7994f70ae47da9f24b154671fd8aff 100644
--- a/src/sbbs3/sbbsecho.c
+++ b/src/sbbs3/sbbsecho.c
@@ -5593,8 +5593,22 @@ void pack_netmail(void)
 					if(kfs > cr)
 						kfs = NULL;
 				}
-				if(write_flofile(hdr.subj,addr,/* bundle: */false,/* use_outbox: */false, /* del_file: */kfs != NULL, hdr.attr))
-					bail(1);
+				char path[MAX_PATH + 1] = "";
+				char filelist[FIDO_SUBJ_LEN];
+				SAFECOPY(filelist, hdr.subj);
+				char* token;
+				for(token = strtok(filelist, " ,"); token != NULL; token = strtok(NULL, " ,")) {
+					char fpath[MAX_PATH + 1];
+					char* fname = getfname(token);
+					if(path[0] == '\0' && fname != token) {
+						SAFECOPY(fpath, token);
+						*fname = '\0';
+						SAFECOPY(path, token);
+					} else
+						snprintf(fpath, sizeof fpath, "%s%s", path, fname);
+					if(write_flofile(fpath, addr,/* bundle: */false,/* use_outbox: */false, /* del_file: */kfs != NULL, hdr.attr) != 0)
+						bail(1);
+				}
 				SAFECOPY(hdr.subj, getfname(hdr.subj));	/* Don't include the file path in the subject */
 			}
 		}