HSLE#37339 E-mail from keuze kunnen configureren

svn path=/Website/trunk/; revision=30248
This commit is contained in:
Jos Groot Lipman
2016-08-09 15:09:28 +00:00
parent b277578864
commit 863ecc375c
3 changed files with 42 additions and 17 deletions

View File

@@ -62,22 +62,25 @@ if (API.apidata.loglevel)
__Log2File(xmlReq.xml, API.APIname + "_IN");
var Subject = XMLval(xmlReq, "subject");
var fromAddr = XMLval(xmlReq, "from");
var fromAddr = XMLval(xmlReq, "fromaddr"); // "Returns the address that the sender gave in the MAIL FROM SMTP-command."
var from = XMLval(xmlReq, "from"); // "This property returns the content of the From MIME-header of the email."
var toAddr = XMLval(xmlReq, "to");
var htmlBody = XMLval(xmlReq, "htmlbody");
var Body = XMLval(xmlReq, "body");
__Log("Subject: " + Subject);
__Log("From: " + fromAddr);
__Log("To: " + toAddr);
__Log("Subject: " + Subject);
__Log("From: " + fromAddr);
__Log("FromAddr: " + from);
__Log("To: " + toAddr);
__Log("htmlBody: " + htmlBody);
__Log("body: " + Body);
__Log("body: " + Body);
var mailuser = toAddr.split("@")[0];
sql = "SELECT fac_email_setting_action,"
+ " fac_email_setting_expire,"
+ " fac_email_setting_from,"
+ " fac_email_setting_frommode,"
+ " fac_email_setting_attachpath"
+ " FROM fac_email_setting"
+ " WHERE upper(fac_email_setting_user) = upper("+safe.quoted_sql(mailuser)+")";
@@ -96,12 +99,16 @@ if (oRs("fac_email_setting_expire").Value != null)
abortRejectMail(L("lcl_fac_hmail_expired"), "Te laat, moest voor: " + expire);
}
}
var theFrom = fromAddr; // SMTP communicatie, werkt matig bij forwards
if (oRs("fac_email_setting_frommode").Value == 1)
theFrom = from; // uit email MIME-header
var shouldFrom = oRs("fac_email_setting_from").Value;
if (shouldFrom)
{
if (String(shouldFrom).toUpperCase() != String(fromAddr).toUpperCase())
if (String(shouldFrom).toUpperCase() != String(theFrom).toUpperCase())
{
abortRejectMail(L("lcl_fac_hmail_wrong_sender"), "Foute afzender. Verwacht: " + shouldFrom + ", kreeg: " + fromAddr);
abortRejectMail(L("lcl_fac_hmail_wrong_sender"), "Foute afzender. Verwacht: " + shouldFrom + ", kreeg: " + theFrom);
}
}
var action = oRs("fac_email_setting_action").Value; // Package aanroep
@@ -125,7 +132,7 @@ if (action) // Bijv "fac.processemail" of "uwva.closeorder-sample"
{
var v_body = Body;
}
sql = "BEGIN " + action + " (" + safe.quoted_sql(fromAddr) + ","
sql = "BEGIN " + action + " (" + safe.quoted_sql(theFrom) + ","
+ safe.quoted_sql(toAddr) + ","
+ safe.quoted_sql(Subject || L("lcl_fac_hmail_no_subject")) + "," // de actions kunnen slecht tegen lege subject
+ safe.quoted_sql(v_body, 3990) + "," // HSLE#33588 10 karakters speling
@@ -195,7 +202,7 @@ if (result.path)
else if (!new RegExp(S("flexallowedext"), "ig").test(safefilename))
{
// TODO: Misschien ook terugkoppelen aan zender?
__DoLog("Onbekende extensie e-mail bijlage: {0} ({1} bytes). Bestand is niet opgeslagen.".format(safefilename, attsize));
__DoLog("Onbekende extensie e-mail bijlage: {0} ({1} bytes) van {2}. Bestand is niet opgeslagen.".format(safefilename, attsize, theFrom));
}
else
{

View File

@@ -44,6 +44,13 @@ function fac_email_setting()
"label": L("fac_email_setting_from"),
"typ": "varchar"
},
"frommode": {
"dbs": "fac_email_setting_frommode",
"label": L("fac_email_setting_frommode"),
"typ": "number",
"required": true,
"LOV": L("fac_email_setting_frommodeLOV")
},
"action": {
"dbs": "fac_email_setting_action",
"label": L("fac_email_setting_action"),

View File

@@ -1,10 +1,13 @@
function OnAcceptMessage(oClient, oMessage)
{
var fromAddr = oMessage.FromAddress;
// var toAddr = oMessage.Recipients.Item(0).Address; // dit zal alles@.... zijn
var from = oMessage.From;
// var toAddr = oMessage.Recipients.Item(0).Address; // dit zal catchall@.... zijn
var toAddr = oMessage.Recipients.Item(0).OriginalAddress; // heeft geen last van de catchall
EventLog.write("From: " + fromAddr);
EventLog.write("From: " + from);
if (fromAddr != from)
EventLog.write("FromAddr: " + fromAddr);
EventLog.write("To: " + toAddr);
var domain = toAddr.split("@")[1]; // Bijvoorbeeld xxxx.facilitor.nl. Daar doen we de API-call ook naar toe
@@ -16,10 +19,17 @@ function OnAcceptMessage(oClient, oMessage)
elementMail = xmlDoc.createElement("mail");
// velden uit https://www.hmailserver.com/documentation/v4.4/?page=com_message
addtext(xmlDoc, elementMail, "subject", oMessage.Subject);
addtext(xmlDoc, elementMail, "from", fromAddr);
addtext(xmlDoc, elementMail, "from", from);
addtext(xmlDoc, elementMail, "fromaddr", fromAddr);
addtext(xmlDoc, elementMail, "to", toAddr);
addtext(xmlDoc, elementMail, "body", oMessage.Body);
addtext(xmlDoc, elementMail, "htmlbody", oMessage.HTMLBody);
// Wat extra velden waar api_hmail (nog) niets mee doet maar mogelijk ooit wel
addtext(xmlDoc, elementMail, "CC", oMessage.CC);
addtext(xmlDoc, elementMail, "Charset", oMessage.Charset);
addtext(xmlDoc, elementMail, "Date", oMessage.Date);
addtext(xmlDoc, elementMail, "Size", oMessage.Size); // Kilobyte trouwens
addtext(xmlDoc, elementMail, "now", new Date()); // For debugging
elementAttachments = xmlDoc.createElement("attachments");
for (i=0; i < oMessage.Attachments.Count; i++)
@@ -53,10 +63,11 @@ function OnAcceptMessage(oClient, oMessage)
var cfgdata = config[domain];
if (!cfgdata)
{
EventLog.write("ini:" + inifile);
Result.Message = "mail domain not configured";
Result.Value = 2; // reject
{ // Gebeurt op LABS bij uitgaande e-mail van Logcenter
EventLog.write("Mail domain '" + domain + "' not configured. Outgoing?");
// EventLog.write("ini:" + inifile);
// Result.Message = "mail domain not configured";
// Result.Value = 2; // reject
return;
}
@@ -96,7 +107,7 @@ function OnAcceptMessage(oClient, oMessage)
EventLog.write(oAttach.fileName + ' bijlage (' + oAttach.Size + ' bytes) naar ' + safefilename);
oAttach.SaveAs(safefilename);
}
EventLog.write("Klaar....");
EventLog.write("----------");
}
function addtext(xmlDoc, elementParent, tag, tekst)