diff --git a/src/sbbs3/writemsg.cpp b/src/sbbs3/writemsg.cpp index 5f34116ea637a5e9e6e91f0114dca085a783c070..b3c763e90cc10f3e105817c2055720e0a4bdf783 100644 --- a/src/sbbs3/writemsg.cpp +++ b/src/sbbs3/writemsg.cpp @@ -1389,7 +1389,15 @@ bool sbbs_t::forwardmail(smbmsg_t* msg, const char* to) msg->idx.to=usernumber; } else { SAFECOPY(touser, to); - smb_hfield_netaddr(msg, RECIPIENTNETADDR, to, NULL); + char* addr = touser; + char* p = strchr(addr, '@'); + if(net_type != NET_INTERNET && p != NULL) + addr = p + 1; + smb_hfield_netaddr(msg, RECIPIENTNETADDR, addr, NULL); + if(p != NULL) + *p = '\0'; + smb_hfield_str(msg, RECIPIENT, touser); + SAFECOPY(touser, to); msg->idx.to=0; } @@ -1431,18 +1439,23 @@ bool sbbs_t::forwardmail(smbmsg_t* msg, const char* to) useron.etoday++; putuserrec(&cfg,useron.number,U_ETODAY,5,ultoa(useron.etoday,tmp,10)); - for(i=1;i<=cfg.sys_nodes;i++) { /* Tell user, if online */ - getnodedat(i,&node,0); - if(node.useron==usernumber && !(node.misc&NODE_POFF) - && (node.status==NODE_INUSE || node.status==NODE_QUIET)) { - SAFEPRINTF2(str,text[EmailNodeMsg],cfg.node_num,useron.alias); - putnmsg(&cfg,i,str); - break; - } - } - if(i>cfg.sys_nodes) { /* User wasn't online, so leave short msg */ - SAFEPRINTF(str,text[UserSentYouMail],useron.alias); - putsmsg(&cfg,usernumber,str); + if(usernumber > 0) { + for(i=1;i<=cfg.sys_nodes;i++) { /* Tell user, if online */ + getnodedat(i,&node,0); + if(node.useron==usernumber && !(node.misc&NODE_POFF) + && (node.status==NODE_INUSE || node.status==NODE_QUIET)) { + SAFEPRINTF2(str,text[EmailNodeMsg],cfg.node_num,useron.alias); + putnmsg(&cfg,i,str); + break; + } + } + if(i>cfg.sys_nodes) { /* User wasn't online, so leave short msg */ + SAFEPRINTF(str,text[UserSentYouMail],useron.alias); + putsmsg(&cfg,usernumber,str); + } + } else { + if(net_type == NET_FIDO && cfg.netmail_sem[0]) + ftouch(cmdstr(cfg.netmail_sem, nulstr, nulstr, NULL)); } return true; }