VNOG#87525 Vraag over CC/BCC in Facilitor-mails

svn path=/Website/trunk/; revision=70842
This commit is contained in:
Erik Groener
2025-11-06 10:26:59 +00:00
parent e295ec02ad
commit 2375767e8c
4 changed files with 79 additions and 14 deletions

View File

@@ -226,9 +226,30 @@ function bestandenlijstALL(pmodule, pniveau, pkey, pnoWorkflow)
if (!await validateForm("u2"))
return false;
if (!new RegExp("<%=safe.jsstring(S("email_regexp"))%>", "ig").test($("#emails").val()))
function isValidMail()
{
FcltMgr.alert(L("lcl_invalid_email"));
var v_mail_arr = [""].concat( (<%=S("email_cc_allowed")%> == 1) ? ["cc","bcc"] : [] );
var v_errmsg = null;
for (var i=0; i<v_mail_arr.length; i++)
{
var v_mail = "emails" + (v_mail_arr[i] != "" ? "_" : "") + v_mail_arr[i];
if ($("#" + v_mail).val())
{
if (!new RegExp("<%=safe.jsstring(S("email_regexp"))%>", "ig").test($("#" + v_mail).val()))
{
v_errmsg = v_mail_arr[i];
return v_errmsg;
}
}
}
return v_errmsg;
}
var emailErr = isValidMail();
if (typeof emailErr == "string" )
{
emailErr = (emailErr ? emailErr.toUpperCase() + " " : "") + L("lcl_invalid_email");
FcltMgr.alert(emailErr);
return false;
}
else
@@ -451,6 +472,22 @@ function bestandenlijstALL(pmodule, pniveau, pkey, pnoWorkflow)
{html: "rows='2' cols='60'", no_bb_codes: true} // kan hier nog iets een nieuwe regel forceren?
);
if (S("email_cc_allowed") == 1)
{
RWTEXTAREATR("emails_cc",
"fldtxt",
L("lcl_noti_sendto_cc"),
defaultemail,
{html: "rows='2' cols='60'", no_bb_codes: true} // kan hier nog iets een nieuwe regel forceren?
);
RWTEXTAREATR("emails_bcc",
"fldtxt",
L("lcl_noti_sendto_bcc"),
defaultemail,
{html: "rows='2' cols='60'", no_bb_codes: true} // kan hier nog iets een nieuwe regel forceren?
);
}
%>
<tr>

View File

@@ -28,22 +28,25 @@ protectRequest.validateToken();
var orgsubject = getFParam("orgsubject", "");
var subject = getFParam("subject", "");
var mailfrom = getFParam("namens", "");
var emails = getFParam("emails", "");
var emails_to = getFParam("emails", "");
var emails_cc = getFParam("emails_cc", "");
var emails_bcc = getFParam("emails_bcc", "");
var xkey = getFParamInt("xkey", -1);
var maillist = "\n" + emails.replace(/\;/g, "\n");
var maillist = "\n" + emails_to.replace(/\;/g, "\n");
var email_receivers = {email_to: emails_to, email_cc: emails_cc, email_bcc:emails_bcc};
function tracksentemail(key, srttracking, emails, mailfrom, subject, prs_perslid_key, xkey, att_list, name_list)
function tracksentemail(key, srttracking, email_receivers, mailfrom, subject, prs_perslid_key, xkey, att_list, name_list)
{
// This function is our gate to the mail (and probably other media) queue for ad hoc sending needs by the user
// To be invoked e.g. when a user wants to e-mail a reservation form ("bon") to requestor or other address
function queuemail(pcode, pref, pmessage, pemail, pmailfrom, xkey)
function queuemail(pcode, pref, pmessage, pemail_to, pmailfrom, xkey, pemail_cc, pemail_bcc)
{
// pcode hoort te zijn een van BESMAI, BES2MA, BEZMAI, MLDMAI, ORDMAI, RESMAI, RES2MA
// en is noodzakelijk om in de queue nog het type te kunnen bepalen.
// PutOrders moet er nl. een bon van kunnen maken. De status/mode aldaar is dummy.
// En: De laatste parameter is voor RESMAI/alleen een deelreservering.
if (pemail == null) return false;
if (pemail_to == null) return false;
if (pmailfrom == "")
{ // Geen namens mail adres meegekregen. Dan mailadres van user invullen
@@ -60,22 +63,31 @@ function tracksentemail(key, srttracking, emails, mailfrom, subject, prs_perslid
+ ", " + pref
+ ", " + safe.quoted_sql(pmessage)
+ ", 2" // pstatus
+ ", " + safe.quoted_sql(pemail)
+ ", " + safe.quoted_sql(pemail_to)
+ ", NULL" // pmobile
+ ", " + xkey
+ ", 2"
+ ", " + safe.quoted_sql(pmailfrom)
+ ", " + safe.quoted_sql(attachments)
+ ", pcc => " + safe.quoted_sql(pemail_cc)
+ ", pbcc => " + safe.quoted_sql(pemail_bcc)
+ "); END;");
return true;
}
// emails splitten
var emailArr = ('' + emails).split(';');
for (i = 0; i < emailArr.length; i++)
{
queuemail (srttracking, key, subject, emailArr[i], mailfrom, xkey);
if (S("email_cc_allowed") == 1)
{ // Versturen naar "cc:" en "bcc:" is ook mogelijk. Meerder "to:" ontvangers ook in een keer versturen.
queuemail (srttracking, key, subject, email_receivers.email_to, mailfrom, xkey, email_receivers.email_cc, email_receivers.email_bcc);
}
else
{ // Alleen "to:" toegestaan: Verstuur elke receiver apart (men kan dus niet zien wie deze mail nog meer krijgt).
var emailArr = ('' + email_receivers.email_to).split(';');
for (i = 0; i < emailArr.length; i++)
{
queuemail (srttracking, key, subject, emailArr[i], mailfrom, xkey);
}
}
// tracking van de XXXMAI is niet altijd gewenst, als het versturen is gelukt
@@ -83,7 +95,7 @@ function tracksentemail(key, srttracking, emails, mailfrom, subject, prs_perslid
if (subject == orgsubject)
return
var mail_str = L("lcl_hasbeenmailed_to") + emails
var mail_str = L("lcl_hasbeenmailed_to") + emails_to
+ (subject != orgsubject ? "\n" + L("lcl_noti_sendsubject") + " " + subject : "");
// Voor RESMAI moet res_rsv_ruimte_key meegegeven worden van de deelreservering.
@@ -173,7 +185,7 @@ for (var att = 0; att < getFParam("cnt_kmnr", -1); att++)
}
// track het senden van de mail
tracksentemail(pkey, pcode, emails, mailfrom, subject, user_key, (xkey > 0? xkey : null), file_list, name_list);
tracksentemail(pkey, pcode, email_receivers, mailfrom, subject, user_key, (xkey > 0? xkey : null), file_list, name_list);
var result = {success: true};

View File

@@ -69,6 +69,8 @@ function sendNotification(ref_key, pcode, params)
= "SELECT prs_perslid_key_receiver"
+ " , fac_notificatie_receiver_email"
+ " , fac_notificatie_receiver_phone"
+ " , fac_notificatie_email_cc"
+ " , fac_notificatie_email_bcc"
+ " , fac_notificatie_oms"
+ " , fac_notificatie_status"
+ " , fac_notificatie_refkey"
@@ -337,6 +339,8 @@ function notificationMail(rec, p_notificationXSL, params)
try
{
var receiver_email = rec("fac_notificatie_receiver_email").value || "";
var receiver_email_cc = rec("fac_notificatie_email_cc").value || "";
var receiver_email_bcc = rec("fac_notificatie_email_bcc").value || "";
var sender_email = rec("fac_notificatie_sender_email").value || "";
var attach_refkey = rec("fac_notificatie_refkey").value;
var attach_srtkenmerkkey = rec("fac_srtnotificatie_srtkm_key").value;
@@ -352,6 +356,10 @@ v_aanduiding = "notificationMail 1";
if (rec("fac_notificatie_status").value & params.STATUS_EMAIL) // bitwise AND
{
var cc_arr = [];
if (receiver_email_cc)
{ // De cc meegegeven adressen. Altijd ; tussen adressen. In een array zodat evt. vervangers kunnen worden toegevoegd.
cc_arr = receiver_email_cc.replace(/[ ,]+/g,";").split(";");
}
if (noti_collegas && prs_perslid_key_receiver)
{
var sql_noti = "SELECT p.prs_perslid_email"
@@ -384,10 +392,16 @@ v_aanduiding = "notificationMail 1";
}
oRs_noti.Close();
}
var bcc_arr = [];
if (receiver_email_bcc)
{ // De bcc meegegeven adressen. Altijd ; tussen adressen.
bcc_arr = receiver_email_bcc.replace(/[ ,]+/g,";");
}
v_aanduiding = "notificationMail 2";
var mail_params = { attachFileName: ""
, attachments: []
, cc: cc_arr.join(";")
, bcc: bcc_arr
};
if (geturl) // Fetch data from url to mail
{

View File

@@ -667,6 +667,8 @@ v_aanduiding = "sendMail 10";
{
var forcedgrouptxt = (forcedgroup ? " forced by allowed group " + S("puo_forceallowedgroep") : "");
forcemsg += "\n (effective from: " + objMail.From + " to: " + objMail.To + forcedgrouptxt + ")";
forcemsg += "\ncc: "+params.cc
+ "\nbcc: "+ params.bcc;
}
Log2File(1, forcemsg);