diff --git a/src/sbbs3/readmail.cpp b/src/sbbs3/readmail.cpp
index 582018a4eabd0a9dc2003f1b1f9f3551f2f64654..5583482adeae052b5fd48e2bb9078389c9536a29 100644
--- a/src/sbbs3/readmail.cpp
+++ b/src/sbbs3/readmail.cpp
@@ -700,15 +700,24 @@ void sbbs_t::readmail(uint usernumber, int which)
 			case 'U':   /* user edit */
 				msg.hdr.number=msg.idx.number;
 				smb_getmsgidx(&smb,&msg);
-				useredit(which==MAIL_SENT ? msg.idx.to : msg.idx.from);
+				if((which==MAIL_SENT ? msg.idx.to : msg.idx.from) == 0) {
+					bputs(text[UnknownUser]);
+					domsg=false;
+				} else
+					useredit(which==MAIL_SENT ? msg.idx.to : msg.idx.from);
 				break;
 			case 'P':   /* Purge author and all mail to/from */
-				if(noyes(text[AreYouSureQ]))
+				if(noyes(text[UeditDeleteQ]))
 					break;
 				msg.hdr.number=msg.idx.number;
 				smb_getmsgidx(&smb,&msg);
-				purgeuser(msg.idx.from);
-				if(smb.curmsg<smb.msgs-1) smb.curmsg++;
+				if((which==MAIL_SENT ? msg.idx.to : msg.idx.from) == 0) {
+					bputs(text[UnknownUser]);
+					domsg=false;
+				} else {
+					purgeuser(msg.idx.from);
+					if(smb.curmsg<smb.msgs-1) smb.curmsg++;
+				}
 				break;
 			case '?':
 				strcpy(str,which==MAIL_YOUR ? "mailread" : which==MAIL_ALL