diff --git a/src/sbbs3/logon.cpp b/src/sbbs3/logon.cpp
index 31b23906360f55c4ab4c406121f5203d078e33b2..f7e6e84d8095ea1465906f4d6cdb9e4afd9adb59 100644
--- a/src/sbbs3/logon.cpp
+++ b/src/sbbs3/logon.cpp
@@ -49,7 +49,7 @@ bool sbbs_t::logon()
 	char	str[256],c;
 	char 	tmp[512];
 	int 	file;
-	uint	i,j,mailw;
+	uint	i,j,mailw,mailr;
 	long	kmode;
 	ulong	totallogons;
 	node_t	node;
@@ -460,7 +460,8 @@ bool sbbs_t::logon()
 		return(true);
 
 	sys_status|=SS_PAUSEON;	/* always force pause on during this section */
-	mailw=getmail(&cfg,useron.number,/* Sent: */FALSE, /* SPAM: */FALSE);
+	mailw=getmail(&cfg,useron.number,/* Sent: */FALSE, /* attr: */0);
+	mailr=getmail(&cfg,useron.number,/* Sent: */FALSE, /* attr: */MSG_READ);
 
 	if(!(cfg.sys_misc&SM_NOSYSINFO)) {
 		bprintf(text[SiSysName],cfg.sys_name);
@@ -470,7 +471,7 @@ bool sbbs_t::logon()
 			,cfg.level_callsperday[useron.level]);
 		bprintf(text[LiTimeonToday],useron.ttoday
 			,cfg.level_timeperday[useron.level]+useron.min);
-		bprintf(text[LiMailWaiting],mailw);
+		bprintf(text[LiMailWaiting],mailw, mailw-mailr);
 		bprintf(text[LiSysopIs]
 			, text[sysop_available(&cfg) ? LiSysopAvailable : LiSysopNotAvailable]);
 		newline();
@@ -535,7 +536,8 @@ bool sbbs_t::logon()
 	if(online==ON_REMOTE)
 		rioctl(IOSM|ABORT);		/* Turn abort ability on */
 	if(text[ReadYourMailNowQ][0] && mailw) {
-		if(yesno(text[ReadYourMailNowQ]))
+		if((mailw == mailr && noyes(text[ReadYourMailNowQ]))
+			|| (mailw != mailr && yesno(text[ReadYourMailNowQ])))
 			readmail(useron.number,MAIL_YOUR); 
 	}
 	if(usrgrps && useron.misc&ASK_NSCAN && text[NScanAllGrpsQ][0] && yesno(text[NScanAllGrpsQ]))