diff --git a/gulliver/system/class.g.php b/gulliver/system/class.g.php index 1a50437b1..55cf21c22 100755 --- a/gulliver/system/class.g.php +++ b/gulliver/system/class.g.php @@ -5290,6 +5290,37 @@ class G return $arrayData; } + + public static function buildFrom($configuration, $from = '') { + if ($from != '') { + if (!preg_match('/(.+)@(.+)\.(.+)/', $from, $match)) { + if ($configuration['MESS_FROM_MAIL'] != '') { + $from .= ' <' . $configuration['MESS_FROM_MAIL'] . '>'; + } else if ($configuration['MESS_ENGINE'] == 'PHPMAILER' && preg_match('/(.+)@(.+)\.(.+)/', $configuration['MESS_ACCOUNT'], $match)) { + $from .= ' <' . $configuration['MESS_ACCOUNT'] . '>'; + } else { + $from .= ' '; + } + } + } else { + if ($configuration['MESS_FROM_NAME'] != '' && $configuration['MESS_FROM_MAIL'] != '') { + $from = $configuration['MESS_FROM_NAME'] . ' <' . $configuration['MESS_FROM_MAIL'] . '>'; + } else if ($configuration['MESS_FROM_NAME'] != '' && $configuration['MESS_ENGINE'] == 'PHPMAILER' && preg_match('/(.+)@(.+)\.(.+)/', $configuration['MESS_ACCOUNT'], $match)) { + $from = $configuration['MESS_FROM_NAME'] . ' <' . $configuration['MESS_ACCOUNT'] . '>'; + } else if ($configuration['MESS_FROM_NAME'] != '') { + $from = $configuration['MESS_FROM_NAME'] . ' '; + } else if ($configuration['MESS_FROM_MAIL'] != '') { + $from = $configuration['MESS_FROM_MAIL']; + } else if ($configuration['MESS_ENGINE'] == 'PHPMAILER' && preg_match('/(.+)@(.+)\.(.+)/', $configuration['MESS_ACCOUNT'], $match)) { + $from = $configuration['MESS_ACCOUNT']; + } else if ($configuration['MESS_ENGINE'] == 'PHPMAILER' && $configuration['MESS_ACCOUNT'] != '' && !preg_match('/(.+)@(.+)\.(.+)/', $configuration['MESS_ACCOUNT'], $match)) { + $from = $configuration['MESS_ACCOUNT'] . ' '; + } else { + $from = 'info@' . ((isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST'] != '')? $_SERVER['HTTP_HOST'] : 'processmaker.com'); + } + } + return $from; + } } /** diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index 4bf003a60..b40c856bc 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -4836,28 +4836,8 @@ class Cases if ($aTaskInfo['TAS_SEND_LAST_EMAIL'] != 'TRUE') { return false; } - /* - if ($sFrom == '') { - $sFrom = '"ProcessMaker"'; - } - */ - if (isset($aConfiguration['MESS_FROM_NAME']) && $aConfiguration['MESS_FROM_NAME'] != '') { - $sFrom = $aConfiguration['MESS_FROM_NAME']; - } - $hasEmailFrom = preg_match('/(.+)@(.+)\.(.+)/', $sFrom, $match); - - if (!$hasEmailFrom || ($aConfiguration["MESS_ACCOUNT"] != '' && strpos($sFrom, $aConfiguration["MESS_ACCOUNT"]) === false)) { - if (trim($aConfiguration["MESS_ACCOUNT"]) != "") { - $sFrom = "\"" . stripslashes($sFrom) . "\" <" . $aConfiguration["MESS_ACCOUNT"] . ">"; - } else { - if ($aConfiguration["MESS_ENGINE"] == "MAIL" && $sFrom != '') { - $sFrom = "\"" . stripslashes($sFrom) . "\""; - } else { - $sFrom = $sFrom . " "; - } - } - } + $sFrom = G::buildFrom($aConfiguration, $sFrom); if (isset($aTaskInfo['TAS_DEF_SUBJECT_MESSAGE']) && $aTaskInfo['TAS_DEF_SUBJECT_MESSAGE'] != '') { $sSubject = G::replaceDataField($aTaskInfo['TAS_DEF_SUBJECT_MESSAGE'], $aFields); diff --git a/workflow/engine/classes/class.spool.php b/workflow/engine/classes/class.spool.php index f91c01204..ff95d8a1c 100755 --- a/workflow/engine/classes/class.spool.php +++ b/workflow/engine/classes/class.spool.php @@ -193,6 +193,7 @@ class spoolRun } else { $aConfig['MESS_RAUTH'] = 0; } + $aConfig['SMTPAuth'] = $aConfig['MESS_RAUTH']; $this->config = $aConfig; } @@ -438,20 +439,6 @@ class spoolRun $oPHPMailer->Host = $this->config['MESS_SERVER']; $oPHPMailer->Port = $this->config['MESS_PORT']; $oPHPMailer->Username = $this->config['MESS_ACCOUNT']; - $passwd = $this->config['MESS_PASSWORD']; - $passwdDec = G::decrypt( $passwd, 'EMAILENCRYPT' ); - $auxPass = explode( 'hash:', $passwdDec ); - - if (count( $auxPass ) > 1) { - if (count( $auxPass ) == 2) { - $passwd = $auxPass[1]; - } else { - array_shift( $auxPass ); - $passwd = implode( '', $auxPass ); - } - } - - $this->config['MESS_PASSWORD'] = $passwd; $oPHPMailer->Password = $this->config['MESS_PASSWORD']; $oPHPMailer->From = $this->fileData['from_email']; $oPHPMailer->FromName = utf8_decode( $this->fileData['from_name'] ); @@ -618,20 +605,8 @@ class spoolRun $row = $rsCriteria->getRow(); try { - $sFrom = $row["APP_MSG_FROM"]; - $hasEmailFrom = preg_match('/(.+)@(.+)\.(.+)/', $sFrom, $match); + $sFrom = G::buildFrom($aConfiguration, $row["APP_MSG_FROM"]); - if (!$hasEmailFrom || ($aConfiguration["MESS_ACCOUNT"] != '' && strpos($sFrom, $aConfiguration["MESS_ACCOUNT"]) === false)) { - if (trim($aConfiguration["MESS_ACCOUNT"]) != "") { - $sFrom = "\"" . stripslashes($sFrom) . "\" <" . $aConfiguration["MESS_ACCOUNT"] . ">"; - } else { - if ($aConfiguration["MESS_ENGINE"] == "MAIL" && $sFrom != '') { - $sFrom = "\"" . stripslashes($sFrom) . "\""; - } else { - $sFrom = $sFrom . " "; - } - } - } $this->setData( $row["APP_MSG_UID"], $row["APP_MSG_SUBJECT"], $sFrom, $row["APP_MSG_TO"], $row["APP_MSG_BODY"], date( "Y-m-d H:i:s" ), $row["APP_MSG_CC"], $row["APP_MSG_BCC"], $row["APP_MSG_TEMPLATE"], $row["APP_MSG_ATTACH"] ); $this->sendMail(); diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index aea2c2eca..3614aa669 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -946,19 +946,8 @@ class wsBase } $sBody = G::replaceDataGridField(file_get_contents($fileTemplate), $Fields, false); - $hasEmailFrom = preg_match( '/(.+)@(.+)\.(.+)/', $sFrom, $match ); - if (!$hasEmailFrom || ($aSetup["MESS_ACCOUNT"] != '' && strpos($sFrom, $aSetup["MESS_ACCOUNT"]) === false)) { - if (trim($aSetup["MESS_ACCOUNT"]) != "") { - $sFrom = "\"" . stripslashes($sFrom) . "\" <" . $aSetup["MESS_ACCOUNT"] . ">"; - } else { - if ($aSetup["MESS_ENGINE"] == "MAIL" && $sFrom != '') { - $sFrom = "\"" . stripslashes($sFrom) . "\""; - } else { - $sFrom = $sFrom . " "; - } - } - } + $sFrom = G::buildFrom($aSetup, $sFrom); $showMessage = ($showMessage) ? 1 : 0 ; diff --git a/workflow/engine/classes/model/AppNotes.php b/workflow/engine/classes/model/AppNotes.php index ec0795cae..6c2c15508 100755 --- a/workflow/engine/classes/model/AppNotes.php +++ b/workflow/engine/classes/model/AppNotes.php @@ -167,28 +167,7 @@ class AppNotes extends BaseAppNotes $configNoteNotification['subject'] = G::LoadTranslation( 'ID_MESSAGE_SUBJECT_NOTE_NOTIFICATION' ) . " @#APP_TITLE "; $configNoteNotification['body'] = G::LoadTranslation( 'ID_CASE' ) . ": @#APP_TITLE
" . G::LoadTranslation( 'ID_AUTHOR' ) . ": $authorName

$noteContent"; - /* - if ($sFrom == '') { - $sFrom = '"ProcessMaker"'; - } - */ - if (isset($aConfiguration['MESS_FROM_NAME']) && $aConfiguration['MESS_FROM_NAME'] != '') { - $sFrom = $aConfiguration['MESS_FROM_NAME']; - } - - $hasEmailFrom = preg_match( '/(.+)@(.+)\.(.+)/', $sFrom, $match ); - - if (!$hasEmailFrom || ($aConfiguration["MESS_ACCOUNT"] != '' && strpos($sFrom, $aConfiguration["MESS_ACCOUNT"]) === false)) { - if (trim($aConfiguration["MESS_ACCOUNT"]) != "") { - $sFrom = "\"" . stripslashes($sFrom) . "\" <" . $aConfiguration["MESS_ACCOUNT"] . ">"; - } else { - if ($aConfiguration["MESS_ENGINE"] == "MAIL" && $sFrom != '') { - $sFrom = "\"" . stripslashes($sFrom) . "\""; - } else { - $sFrom = $sFrom . " "; - } - } - } + $sFrom = G::buildFrom($aConfiguration, $sFrom); $sSubject = G::replaceDataField( $configNoteNotification['subject'], $aFields ); diff --git a/workflow/engine/controllers/adminProxy.php b/workflow/engine/controllers/adminProxy.php index 11ba953c9..459d7154a 100644 --- a/workflow/engine/controllers/adminProxy.php +++ b/workflow/engine/controllers/adminProxy.php @@ -382,7 +382,7 @@ class adminProxy extends HttpProxyController $_POST['MESS_ACCOUNT'] = $mail_to; $_POST['MESS_PASSWORD'] = ''; $_POST['TO'] = $mail_to; - $_POST['SMTPAuth'] = true; + $_POST['MESS_RAUTH'] = true; try { $resp = $this->sendTestMail(); @@ -538,9 +538,9 @@ class adminProxy extends HttpProxyController $_POST['TO'] = $Mailto; if ($auth_required == 'true') { - $_POST['SMTPAuth'] = true; + $_POST['MESS_RAUTH'] = true; } else { - $_POST['SMTPAuth'] = false; + $_POST['MESS_RAUTH'] = false; } if (strtolower($_POST["UseSecureCon"]) != "no") { $_POST["SMTPSecure"] = $_POST["UseSecureCon"]; @@ -582,11 +582,19 @@ class adminProxy extends HttpProxyController G::LoadClass("system"); G::LoadClass('spool'); - $eregMail = "/^[0-9a-zA-Z]+(?:[._][0-9a-zA-Z]+)*@[0-9a-zA-Z]+(?:[._-][0-9a-zA-Z]+)*\.[0-9a-zA-Z]{2,3}$/"; + $aConfiguration = array( + 'MESS_ENGINE' => $_POST['MESS_ENGINE'], + 'MESS_SERVER' => $_POST['MESS_SERVER'], + 'MESS_PORT' => $_POST['MESS_PORT'], + 'MESS_ACCOUNT' => $_POST['MESS_ACCOUNT'], + 'MESS_PASSWORD' => $_POST['MESS_PASSWORD'], + 'MESS_FROM_NAME' => $_POST["FROM_NAME"], + 'MESS_FROM_MAIL' => $_POST["FROM_EMAIL"], + 'MESS_RAUTH' => $_POST['MESS_RAUTH'], + 'SMTPSecure' => isset($_POST['SMTPSecure'])?$_POST['SMTPSecure']:'none' + ); - $fromNameAux = ($_POST["FROM_NAME"] != "")? $_POST["FROM_NAME"] . " " : ""; - $fromMailAux = (preg_match($eregMail, $_POST["FROM_EMAIL"]))? "<" . $_POST["FROM_EMAIL"] . ">" : ""; - $sFrom = $fromNameAux . $fromMailAux; + $sFrom = G::buildFrom($aConfiguration); $sSubject = G::LoadTranslation('ID_MESS_TEST_SUBJECT'); $msg = G::LoadTranslation('ID_MESS_TEST_BODY'); @@ -613,18 +621,8 @@ class adminProxy extends HttpProxyController $sBody = $sBodyPre->getOutputContent(); $oSpool = new spoolRun(); - $oSpool->setConfig( - array( - 'MESS_ENGINE' => $_POST['MESS_ENGINE'], - 'MESS_SERVER' => $_POST['MESS_SERVER'], - 'MESS_PORT' => $_POST['MESS_PORT'], - 'MESS_ACCOUNT' => $_POST['MESS_ACCOUNT'], - 'MESS_PASSWORD' => $_POST['MESS_PASSWORD'], - "FROM_EMAIL" => $_POST["FROM_EMAIL"], - 'SMTPAuth' => $_POST['SMTPAuth'], - 'SMTPSecure' => isset($_POST['SMTPSecure'])?$_POST['SMTPSecure']:'none' - ) - ); + + $oSpool->setConfig($aConfiguration); $oSpool->create( array( @@ -699,7 +697,7 @@ class adminProxy extends HttpProxyController $aFields['MESS_ENGINE'] = $_POST['EmailEngine']; $aFields['MESS_SERVER'] = trim($_POST['server']); $aFields['MESS_RAUTH'] = isset($_POST['req_auth']) ? $_POST['req_auth'] : ''; - $aFields['MESS_RAUTH'] = ($aFields['MESS_RAUTH'] == 'true') ? '1' : $aFields['MESS_RAUTH']; + $aFields['MESS_RAUTH'] = ($aFields['MESS_RAUTH'] == 'true') ? true : $aFields['MESS_RAUTH']; $aFields['MESS_PORT'] = $_POST['port']; $aFields['MESS_ACCOUNT'] = $_POST['from']; $aFields['MESS_BACKGROUND'] = '';//isset($_POST['background']) ? $_POST['background'] : ''; diff --git a/workflow/engine/methods/cases/cases_Derivate.php b/workflow/engine/methods/cases/cases_Derivate.php index 5855894c5..55ede1ff2 100755 --- a/workflow/engine/methods/cases/cases_Derivate.php +++ b/workflow/engine/methods/cases/cases_Derivate.php @@ -117,10 +117,7 @@ try { // Send notifications - Start $oUser = new Users(); $aUser = $oUser->load( $_SESSION['USER_LOGGED'] ); - if (trim( $aUser['USR_EMAIL'] ) == '') { - $aUser['USR_EMAIL'] = 'info@' . $_SERVER['HTTP_HOST']; - } - $sFromName = '"' . $aUser['USR_FIRSTNAME'] . ' ' . $aUser['USR_LASTNAME'] . '" <' . $aUser['USR_EMAIL'] . '>'; + $sFromName = $aUser['USR_FIRSTNAME'] . ' ' . $aUser['USR_LASTNAME'] . ($aUser['USR_EMAIL'] != '' ? ' <' . $aUser['USR_EMAIL'] . '>' : ''); try { $oCase->sendNotifications( $_SESSION['TASK'], $_POST['form']['TASKS'], $appFields['APP_DATA'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $sFromName ); } catch (Exception $e) { diff --git a/workflow/engine/methods/login/retrivePassword.php b/workflow/engine/methods/login/retrivePassword.php index b4740e59e..490541ffd 100755 --- a/workflow/engine/methods/login/retrivePassword.php +++ b/workflow/engine/methods/login/retrivePassword.php @@ -11,7 +11,7 @@ $user = new Users(); $userData = $rbacUser->getByUsername($data['USR_USERNAME']); -if ($userData['USR_EMAIL'] != '' && $userData['USR_EMAIL'] === $data['USR_EMAIL'] && $userData['USR_AUTH_TYPE'] === '' ) { +if ($userData['USR_EMAIL'] != '' && $userData['USR_EMAIL'] === $data['USR_EMAIL'] && ($userData['USR_AUTH_TYPE'] === '' || $userData['USR_AUTH_TYPE'] == 'MYSQL') ) { $aSetup = System::getEmailConfiguration(); if (count($aSetup) == 0 || !isset($aSetup['MESS_ENGINE'])) { G::SendTemporalMessage ('ID_EMAIL_ENGINE_IS_NOT_ENABLED', "warning"); @@ -28,18 +28,7 @@ if ($userData['USR_EMAIL'] != '' && $userData['USR_EMAIL'] === $data['USR_EMAIL' $user->update($aData); */ - if (trim($aSetup["MESS_FROM_NAME"]) === '') { - $aSetup["MESS_FROM_NAME"] = 'PROCESSMAKER'; - } - if ($aSetup['MESS_ENGINE'] === 'MAIL') { - $sFrom = $aSetup["MESS_FROM_NAME"] . " "; - } else { - if (trim($aSetup["MESS_ACCOUNT"]) === '') { - $sFrom = $aSetup["MESS_FROM_NAME"] . " "; - } else { - $sFrom = $aSetup["MESS_FROM_NAME"] . " <" . $aSetup["MESS_ACCOUNT"] . ">"; - } - } + $sFrom = G::buildFrom($aSetup, $sFrom); $sSubject = G::LoadTranslation('ID_RESET_PASSWORD').' - ProcessMaker' ; $msg = '

ProcessMaker Forgot password Service

'; @@ -92,13 +81,13 @@ if ($userData['USR_EMAIL'] != '' && $userData['USR_EMAIL'] === $data['USR_EMAIL' $oSpool->sendMail(); $rbacUser->update($aData); $user->update($aData); - G::header ("location: login.html"); + G::header ("location: login"); G::SendTemporalMessage ('ID_NEW_PASSWORD_SENT', "info"); } catch (phpmailerException $e) { - G::header ("location: login.html"); + G::header ("location: login"); G::SendTemporalMessage (G::LoadTranslation('MISSING_OR_NOT_CONFIGURED_SMTP'), "warning", 'string'); } catch (Exception $e) { - G::header ("location: login.html"); + G::header ("location: login"); G::SendTemporalMessage ($e->getMessage(), "warning", 'string'); } } else {