current_user_name = $_SESSION[self::USER_NAME] ?? ""; $this->current_user_email = $_SESSION[self::USER_EMAIL] ?? ""; } // ============================= // Email a new users credentials // ============================= public function emailNewUserCredentials($user, $password) { if (!$user instanceof SimpleXMLElement) { return; } // Prepare the email $to = (string) $user->record->user_email; $XSLParms['USER-TEMP-PASSWORD'] = $password; $subject = "DEC International DMS - New User Credentials"; $message = $this->applyXSL($user, $this->getXSL("emailNewUserCredentials"), $XSLParms); // Send the Email $this->sendEmail($to, $subject, $message); } // ================================= // Email a users Password Reset Link // ================================= public function emailUserPasswordResetLink($user, $password) { if (!$user instanceof SimpleXMLElement) { return; } // Prepare the email. $XSLParms['USER-TEMP-PASSWORD'] = $password; $to = (string) $user->record->user_email; $subject = "DEC International DMS - Password Reset Request"; $message = $this->applyXSL($user, $this->getXSL("emailPasswordResetLink"), $XSLParms); // Send the Email $this->sendEmail($to, $subject, $message); } // ======================================= // Send an email with optional attachments // ======================================= public function sendEmail($to = "", $subject = "", $message = "", $attachments = "", $attachment_names = "unknown") { if (empty($to) or empty($subject) or empty($message)) { return false; } $settings = $this->getSettings(); $SmtpHost = $settings->SmtpServer; $SmtpUsername = $settings->SmtpUserName; $SmtpPassword = $settings->SmtpPassword; $SmtpPort = $settings->SmtpPort; $email = new PHPMailer(true); // Only for development $message = "" . $message . ""; try { //Server settings $email->isSMTP(); $email->Host = $SmtpHost; $email->SMTPAuth = true; $email->Username = $SmtpUsername; // Your Gmail address $email->Password = $SmtpPassword; // App password from Google // $email->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // or 'tls' $email->Port = $SmtpPort; $email->isHTML(true); $email->SetFrom("info@onesourceits.com", "OneSource IT Solutions LLC"); if (is_array($to)) { foreach ($to as $address) { $address = trim(str_replace(" ", "", $address)); if (empty($address)) { continue; } $email->addAddress($address); } } else { $email->addAddress($to); } $email->Subject = $subject; $email->Body = $message; if (is_array($attachments)) { foreach ($attachments as $index => $item) { if (!empty($item)) { $email->addStringAttachment($item, ($attachment_names[$index] ?? "unknown")); } } } else { if (!empty($attachments)) { $email->addStringAttachment($attachments, $attachment_names); } } $success = $email->Send(); } catch (phpMailerException $e) { (new Journal())->journalEntry($e->errorMessage()); $success = false; } catch (Exception $e) { (new Journal())->journalEntry($e->getMessage()); $success = false; } return $success; } // ============================== // Send an Error Email to Support // ============================== public function sendErrorEmail($error_message = "", $error_file = "", $error_line = "") { $settings = $this->getSettings(); $Environment = (string) $settings->Environment; $SupportEmail = (string) $settings->SupportEmail; if ($Environment == "Development") { return; } $application_name = self::APPLICATION_NAME; $message = ""; $message .= "
An application error has occurred in the {$application_name} application.
File: {$error_file}
"; $message .= "Line: {$error_line}
"; $message .= "Error: {$error_message}
"; $to = $SupportEmail; $subject = "{$application_name} Application Error"; $this->sendEmail($to, $subject, $message); } } ?>