Files
luos/workflow/engine/methods/setup/emails_Ajax.php

321 lines
12 KiB
PHP
Raw Normal View History

2010-12-02 23:34:41 +00:00
<?php
/**
* emails.php
*
* ProcessMaker Open Source Edition
* Copyright (C) 2004 - 2008 Colosa Inc.23
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2010-12-02 23:34:41 +00:00
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
2010-12-02 23:34:41 +00:00
*
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
*/
2015-03-18 17:12:38 -04:00
G::LoadSystem('inputfilter');
$filter = new InputFilter();
$_POST = $filter->xssFilterHard($_POST);
if(isset($_SERVER['SERVER_NAME'])) {
$_SERVER['SERVER_NAME'] = $filter->xssFilterHard($_SERVER['SERVER_NAME']);
}
2010-12-02 23:34:41 +00:00
global $RBAC;
$RBAC->requirePermissions( 'PM_SETUP_ADVANCE' );
2010-12-02 23:34:41 +00:00
$request = (isset( $_POST['action'] )) ? $_POST['action'] : $_POST['request'];
2010-12-02 23:34:41 +00:00
switch ($request) {
case 'init':
$G_PUBLISH = new Publisher();
$G_PUBLISH->AddContent( 'view', 'setup/mailConnectiontest' );
G::RenderPage( 'publish', 'raw' );
break;
case 'mailTestMail_Show':
define( "SUCCESSFUL", 'SUCCESSFUL' );
define( "FAILED", 'FAILED' );
$mail_to = $_POST['mail_to'];
$send_test_mail = $_POST['send_test_mail'];
$_POST['FROM_NAME'] = $mail_to;
$_POST['FROM_EMAIL'] = $mail_to;
$_POST['MESS_ENGINE'] = 'MAIL';
$_POST['MESS_SERVER'] = 'localhost';
$_POST['MESS_PORT'] = 25;
$_POST['MESS_ACCOUNT'] = $mail_to;
$_POST['MESS_PASSWORD'] = '';
$_POST['TO'] = $mail_to;
$_POST['SMTPAuth'] = true;
$resp = sendTestMail();
if ($resp->status) {
print (SUCCESSFUL . ',' . $resp->msg) ;
2011-01-13 23:14:20 +00:00
} else {
print (FAILED . ',' . $resp->msg) ;
2011-01-13 23:14:20 +00:00
}
break;
case 'testConnection':
G::LoadClass( 'net' );
G::LoadThirdParty( 'phpmailer', 'class.smtp' );
define( "SUCCESSFUL", 'SUCCESSFUL' );
define( "FAILED", 'FAILED' );
$varaux = preg_match( "([^//]*$)", $_POST['srv'], $regs );
if ($regs)
$srv = $regs[0];
else
$srv = $_POST['srv'];
$port = ($_POST['port'] == 'default') ? 25 : $_POST['port'];
$user = $_POST['account'];
$passwd = $_POST['passwd'];
$passwdDec = G::decrypt( $passwd, 'EMAILENCRYPT' );
$auxPass = explode( 'hash:', $passwdDec );
if (count( $auxPass ) > 1) {
if (count( $auxPass ) == 2) {
$passwd = $auxPass[1];
2011-01-13 23:14:20 +00:00
} else {
array_shift( $auxPass );
$passwd = implode( '', $auxPass );
2011-01-13 23:14:20 +00:00
}
}
$_POST['passwd'] = $passwd;
$step = $_POST['step'];
$auth_required = $_POST['auth_required'];
$send_test_mail = $_POST['send_test_mail'];
$mail_to = $_POST['mail_to'];
$SMTPSecure = $_POST['SMTPSecure'];
$timeout = 10;
$Server = new NET( $srv );
$smtp = new SMTP();
switch ($step) {
case 1:
if ($Server->getErrno() == 0) {
print (SUCCESSFUL . ',') ;
} else {
print (FAILED . ',' . $Server->error) ;
}
break;
case 2:
if ($port == 0) {
$port = $smtp->SMTP_PORT;
}
$Server->scannPort( $port );
if ($Server->getErrno() == 0) {
print (SUCCESSFUL . ',') ;
} else {
print (FAILED . ',' . $Server->error) ;
}
break;
#try to connect to host
case 3:
$hostinfo = array ();
if (preg_match( '/^(.+):([0-9]+)$/', $srv, $hostinfo )) {
$host = $hostinfo[1];
$port = $hostinfo[2];
} else {
$host = $srv;
}
2011-01-13 23:14:20 +00:00
$tls = ($SMTPSecure == 'tls');
$ssl = ($SMTPSecure == 'ssl');
$resp = $smtp->Connect( ($ssl ? 'ssl://' : '') . $host, $port, $timeout );
if ($resp) {
print (SUCCESSFUL . ',' . $smtp->status) ;
} else {
print (FAILED . ',' . $smtp->error['error']) ;
}
break;
#try login to host
case 4:
if ($auth_required == 'yes') {
try {
$hostinfo = array ();
if (preg_match( '/^(.+):([0-9]+)$/', $srv, $hostinfo )) {
$host = $hostinfo[1];
$port = $hostinfo[2];
} else {
$host = $srv;
}
$tls = ($SMTPSecure == 'tls');
$ssl = ($SMTPSecure == 'ssl');
$resp = $smtp->Connect( ($ssl ? 'ssl://' : '') . $host, $port, $timeout );
if ($resp) {
$hello = $_SERVER['SERVER_NAME'];
$smtp->Hello( $hello );
if ($tls) {
if (! $smtp->StartTLS()) {
// problem with tls
}
//We must resend HELO after tls negotiation
$smtp->Hello( $hello );
}
if ($smtp->Authenticate( $user, $passwd )) {
print (SUCCESSFUL . ',' . $smtp->status) ;
} else {
$smtpError = $smtp->getError();
print (FAILED . ',' . $smtpError['error']);
// print (FAILED . ',' . $smtp->error['error']) ;
}
} else {
$smtpError = $smtp->getError();
print (FAILED . ',' . $smtpError['error']);
// print (FAILED . ',' . $smtp->error['error']) ;
}
} catch (Exception $e) {
2016-07-27 16:37:21 -04:00
$token = strtotime("now");
PMException::registerErrorLog($e, $token);
G::outRes( G::LoadTranslation("ID_EXCEPTION_LOG_INTERFAZ", array($token)) );
}
} else {
print (SUCCESSFUL . ', No authentication required!') ;
}
break;
case 5:
if ($send_test_mail == 'yes') {
try {
//print(SUCCESSFUL.',ok');
$_POST['FROM_NAME'] = G::LoadTranslation('ID_MESS_TEST_BODY');
$_POST['FROM_EMAIL'] = $user;
$_POST['MESS_ENGINE'] = 'PHPMAILER';
$_POST['MESS_SERVER'] = $srv;
$_POST['MESS_PORT'] = $port;
$_POST['MESS_ACCOUNT'] = $user;
$_POST['MESS_PASSWORD'] = $passwd;
$_POST['TO'] = $mail_to;
if ($auth_required == 'yes') {
$_POST['SMTPAuth'] = true;
} else {
$_POST['SMTPAuth'] = false;
}
$resp = sendTestMail();
if ($resp->status) {
print (SUCCESSFUL . ',' . $resp->msg) ;
} else {
print (FAILED . ',' . $resp->msg) ;
}
} catch (Exception $e) {
2016-07-27 16:37:21 -04:00
$token = strtotime("now");
PMException::registerErrorLog($e, $token);
G::outRes( G::LoadTranslation("ID_EXCEPTION_LOG_INTERFAZ", array($token)) );
}
} else {
print ('jump this step') ;
}
break;
default:
print ('test finished!') ;
2011-01-13 23:14:20 +00:00
}
break;
}
2011-01-13 23:14:20 +00:00
function sendTestMail ()
{
G::LoadClass( "system" );
$sFrom = ($_POST['FROM_NAME'] != '' ? $_POST['FROM_NAME'] . ' ' : '') . '<' . $_POST['FROM_EMAIL'] . '>';
$sSubject = G::LoadTranslation( 'ID_MESS_TEST_SUBJECT' );
$msg = G::LoadTranslation( 'ID_MESS_TEST_BODY' );
switch ($_POST['MESS_ENGINE']) {
case 'MAIL':
$engine = G::LoadTranslation( 'ID_MESS_ENGINE_TYPE_1' );
break;
case 'PHPMAILER':
$engine = G::LoadTranslation( 'ID_MESS_ENGINE_TYPE_2' );
break;
case 'OPENMAIL':
$engine = G::LoadTranslation( 'ID_MESS_ENGINE_TYPE_3' );
break;
2011-01-13 23:14:20 +00:00
}
2010-12-02 23:34:41 +00:00
$sBody = "
2011-01-13 23:14:20 +00:00
<table style=\"background-color: white; font-family: Arial,Helvetica,sans-serif; color: black; font-size: 11px; text-align: left;\" cellpadding='10' cellspacing='0' width='100%'>
<tbody><tr><td><img id='logo' src='http://" . $_SERVER['SERVER_NAME'] . "/images/processmaker.logo.jpg' /></td></tr>
<tr><td style='font-size: 14px;'>$msg [" . date( 'H:i:s' ) . "] - $engine</td></tr>
2011-01-13 23:14:20 +00:00
<tr><td style='vertical-align:middel;'>
<br /><hr><b>This Business Process is powered by ProcessMaker ver. " . System::getVersion() . ".<b><br />
2011-01-13 23:14:20 +00:00
<a href='http://www.processmaker.com' style='color:#c40000;'>www.processmaker.com</a><br /></td>
</tr></tbody></table>";
G::LoadClass( 'spool' );
$oSpool = new spoolRun();
2010-12-02 23:34:41 +00:00
$passwd = $_POST['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 );
}
}
$_POST['MESS_PASSWORD'] = $passwd;
2010-12-02 23:34:41 +00:00
$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'],'SMTPAuth' => $_POST['SMTPAuth'],'SMTPSecure' => isset( $_POST['SMTPSecure'] ) ? $_POST['SMTPSecure'] : 'none'
) );
2011-01-13 23:14:20 +00:00
$oSpool->create( array ('msg_uid' => '','app_uid' => '','del_index' => 0,'app_msg_type' => 'TEST','app_msg_subject' => $sSubject,'app_msg_from' => $sFrom,'app_msg_to' => $_POST['TO'],'app_msg_body' => $sBody,'app_msg_cc' => '','app_msg_bcc' => '','app_msg_attach' => '','app_msg_template' => '','app_msg_status' => 'pending','app_msg_attach' => '' // Added By Ankit
) );
2011-01-13 23:14:20 +00:00
$oSpool->sendMail();
2011-01-13 23:14:20 +00:00
global $G_PUBLISH;
$G_PUBLISH = new Publisher();
if ($oSpool->status == 'sent') {
$o->status = true;
$o->msg = G::LoadTranslation( 'ID_MAIL_TEST_SUCCESS' );
2011-01-13 23:14:20 +00:00
} else {
$o->status = false;
$o->msg = $oSpool->error;
2011-01-13 23:14:20 +00:00
}
return $o;
}
function e_utf8_encode ($input)
{
$utftext = null;
2010-12-02 23:34:41 +00:00
for ($n = 0; $n < strlen( $input ); $n ++) {
$c = ord( $input[$n] );
if ($c < 128) {
$utftext .= chr( $c );
} else if (($c > 128) && ($c < 2048)) {
$utftext .= chr( ($c >> 6) | 192 );
$utftext .= chr( ($c & 63) | 128 );
} else {
$utftext .= chr( ($c >> 12) | 224 );
$utftext .= chr( (($c & 6) & 63) | 128 );
$utftext .= chr( ($c & 63) | 128 );
}
}
return $utftext;
}