. * * For more information, contact Colosa Inc, 2566 Le Jeune Rd., * Coral Gables, FL, 33134, USA, or email info@colosa.com. * */ global $RBAC; $RBAC->requirePermissions('PM_SETUP_ADVANCE'); $request = (isset($_POST['action']))?$_POST['action']:$_POST['request']; 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); } else { print(FAILED.','.$resp->msg); } 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']; $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; } $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 { print(FAILED.','.$smtp->error['error']); } } else { print(FAILED.','.$smtp->error['error']); } } catch (Exception $e) { print(FAILED.','.$e->getMessage()); } } else { print(SUCCESSFUL.', No authentication required!'); } break; case 5: if($send_test_mail == 'yes'){ try { //print(SUCCESSFUL.',ok'); $_POST['FROM_NAME'] = 'Process Maker O.S. [Test mail]'; $_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) { print(FAILED.','.$e->getMessage()); } } else { print('jump this step'); } break; default: print('test finished!'); } break; } 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; } $sBody = "
$msg [".date('H:i:s')."] - $engine


This Business Process is powered by ProcessMaker ver. ".System::getVersion().".
www.processmaker.com
"; G::LoadClass('spool'); $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'], 'SMTPAuth' => $_POST['SMTPAuth'], 'SMTPSecure' => isset($_POST['SMTPSecure'])?$_POST['SMTPSecure']:'none' )); $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 )); $oSpool->sendMail(); global $G_PUBLISH; $G_PUBLISH = new Publisher(); if ($oSpool->status == 'sent') { $o->status = true; $o->msg = G::LoadTranslation('ID_MAIL_TEST_SUCCESS'); } else { $o->status = false; $o->msg = $oSpool->error; } return $o; } function e_utf8_encode($input) { $utftext = null; 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; }