Improvements in email configuration with sendmail, gmail server and client server

This commit is contained in:
Julio Cesar Laura
2014-04-30 02:59:55 -04:00
committed by Erik Amaru Ortiz
parent c4a0ab336a
commit 82b3a78a0c
8 changed files with 60 additions and 122 deletions

View File

@@ -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 .= ' <info@' . ((isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST'] != '')? $_SERVER['HTTP_HOST'] : 'processmaker.com') . '>';
}
}
} 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'] . ' <info@' . ((isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST'] != '')? $_SERVER['HTTP_HOST'] : 'processmaker.com') . '>';
} 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'] . ' <info@' . ((isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST'] != '')? $_SERVER['HTTP_HOST'] : 'processmaker.com') . '>';
} else {
$from = 'info@' . ((isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST'] != '')? $_SERVER['HTTP_HOST'] : 'processmaker.com');
}
}
return $from;
}
}
/**

View File

@@ -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 . " <info@" . ((isset($_SERVER["HTTP_HOST"]) && $_SERVER["HTTP_HOST"] != "")? $_SERVER["HTTP_HOST"] : "processmaker.com") . ">";
}
}
}
$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);

View File

@@ -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 . " <info@" . ((isset($_SERVER["HTTP_HOST"]) && $_SERVER["HTTP_HOST"] != "")? $_SERVER["HTTP_HOST"] : "processmaker.com") . ">";
}
}
}
$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();

View File

@@ -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 . " <info@" . ((isset($_SERVER["HTTP_HOST"]) && $_SERVER["HTTP_HOST"] != "")? $_SERVER["HTTP_HOST"] : "processmaker.com") . ">";
}
}
}
$sFrom = G::buildFrom($aSetup, $sFrom);
$showMessage = ($showMessage) ? 1 : 0 ;

View File

@@ -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<br />" . G::LoadTranslation( 'ID_AUTHOR' ) . ": $authorName<br /><br />$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 . " <info@" . ((isset($_SERVER["HTTP_HOST"]) && $_SERVER["HTTP_HOST"] != "")? $_SERVER["HTTP_HOST"] : "processmaker.com") . ">";
}
}
}
$sFrom = G::buildFrom($aConfiguration, $sFrom);
$sSubject = G::replaceDataField( $configNoteNotification['subject'], $aFields );

View File

@@ -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'] : '';

View File

@@ -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) {

View File

@@ -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"] . " <info@" . ((isset($_SERVER["HTTP_HOST"]) && $_SERVER["HTTP_HOST"] != "") ? $_SERVER["HTTP_HOST"] : "processmaker.com") . ">";
} else {
if (trim($aSetup["MESS_ACCOUNT"]) === '') {
$sFrom = $aSetup["MESS_FROM_NAME"] . " <info@" . ((isset($_SERVER["HTTP_HOST"]) && $_SERVER["HTTP_HOST"] != "") ? $_SERVER["HTTP_HOST"] : "processmaker.com") . ">";
} else {
$sFrom = $aSetup["MESS_FROM_NAME"] . " <" . $aSetup["MESS_ACCOUNT"] . ">";
}
}
$sFrom = G::buildFrom($aSetup, $sFrom);
$sSubject = G::LoadTranslation('ID_RESET_PASSWORD').' - ProcessMaker' ;
$msg = '<h3>ProcessMaker Forgot password Service</h3>';
@@ -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 {