diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js index 9110f618..8b9eb079 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js @@ -17,6 +17,21 @@ if (!intro_seen && !request_headers.query.intro_seen) { headers = "300 OK\nwtv-visit: " + clientErrorMsg; } + var to_addr = request_headers.query.message_to || null; + var msg_subject = request_headers.query.message_subject || null; + var msg_body = request_headers.query.message_body || null; + var to_name = request_headers.query.whatever_webtv_sends_this_as || null; + var no_signature = request_headers.query.no_signature || false; + var mail_draft_data = ssid_sessions[socket.ssid].getSessionData("mail_draft"); + if (mail_draft_data) { + ssid_sessions[socket.ssid].deleteSessionData("mail_draft") + to_addr = mail_draft_data.to_addr; + msg_subject = mail_draft_data.msg_subject; + msg_body = mail_draft_data.msg_body; + no_signature = mail_draft_data.no_signature; + } + + var username = ssid_sessions[socket.ssid].getSessionData("subscriber_username"); var userdisplayname = html_entities.encode(ssid_sessions[socket.ssid].getSessionData("subscriber_name")); var address = username + "@" + minisrv_config.config.service_name @@ -28,22 +43,31 @@ if (!intro_seen && !request_headers.query.intro_seen) { 'noback': true, }).getURL(); - if (request_headers.query.sendoff == "Send") { + if (request_headers.query.sendoff == "Send" || request_headers.query.saveoff) { var from_addr = address; - var to_addr = request_headers.query.message_to; - var msg_subject = request_headers.query.message_subject; - var msg_body = request_headers.query.message_body; - var to_name = request_headers.query.whatever_webtv_sends_this_as || null; var signature = ssid_sessions[socket.ssid].getSessionData("subscriber_signature") || null; - var messagereturn = ssid_sessions[socket.ssid].mailstore.sendMessageToAddr(from_addr, to_addr, msg_body, msg_subject, userdisplayname, to_name, signature); - if (messagereturn !== true) { - var errpage = wtvshared.doErrorPage(400, messagereturn); - headers = errpage[0]; - data = errpage[1]; + if (request_headers.query.sendoff == "Send") { + var messagereturn = ssid_sessions[socket.ssid].mailstore.sendMessageToAddr(from_addr, to_addr, msg_body, msg_subject, userdisplayname, to_name, signature); + if (messagereturn !== true) { + var errpage = wtvshared.doErrorPage(400, messagereturn); + headers = errpage[0]; + data = errpage[1]; + } else { + headers = `300 OK + wtv-expire: wtv-mail:/listmail + Location: wtv-mail:/listmail`; + } } else { - headers = `300 OK -wtv-expire: wtv-mail:/listmail -Location: wtv-mail:/listmail`; + var mail_draft_data = { + to_addr: to_addr, + msg_subject: msg_subject, + msg_body: msg_body, + no_signature: no_signature + } + ssid_sessions[socket.ssid].setSessionData("mail_draft", mail_draft_data); + headers = `200 OK +Content-type text/html +wtv-expire: wtv-mail:/sendmail`; } } else { @@ -377,7 +401,7 @@ autoactivate addresses autoascii nohighlight -> +>${(to_addr) ? to_addr : ''}