1], $condition); if ($emails) { // use html email template $message = file_get_contents($config['email_template']); $email_account = $config['email_outbox']; foreach ($emails as $email) { $mail = new PHPMailer(true); $user_fullname = ''; if (is_numeric($email['user_id'])) { $clause = []; $condition = [ 'id = '.$email['user_id'], ]; $get_user = dbget('users', $clause, $condition); if (count($get_user) > 0) { $user_fullname = $get_user[0]['fullname']; } } try { $email_content = nl2br($email['content_html']); $body = $email_content; $array_subject = explode(' ', $email['subject']); if (count($array_subject) > 2) { // use html template only for ticket notification if ($array_subject[0] == 'Synergix' && $array_subject[1] == 'Ticket') { // replace keyword from email template if ($config['email_template_status']) { $replacements = array( '({{ticket_url}})' => $config['ticket_url'], '({{domain_name}})' => $config['domain_name'], '({{email_content}})' => $email_content, '({{user_fullname}})' => $user_fullname ); $body = preg_replace(array_keys($replacements), array_values($replacements), $message); } } } $mail->SMTPDebug = $email_account['debugmode']; $mail->isSMTP(); $mail->Host = $email_account['host']; $mail->SMTPAuth = $email_account['smtpauth']; $mail->SMTPSecure = $email_account['smtpsecure']; $mail->Port = $email_account['port']; $mail->Username = $email_account['username']; $mail->Password = $email_account['password']; $mail->Sender = $email_account['sender']; // $mail->From = (empty($email['email_from']) ? $email_account['from'] : $email['email_from']); // $mail->FromName = (empty($email['email_from']) ? $email_account['fromname'] : $email['email_from']); $mail->From = $email_account['from']; $mail->FromName = $email_account['fromname']; $mail->isHTML(true); $mail->Subject = $email['subject']; $mail->Body = $body; $mail->clearAllRecipients(); // add recipient if ($email['email_to']) { $recipient_num = substr_count($email['email_to'], ';'); $recipient = explode(';', $email['email_to']); for($i=0; $i<=$recipient_num; $i++) { if (!empty($recipient[$i])) { $email_addr = str_replace(' ', '', $recipient[$i]); if (filter_var($email_addr, FILTER_VALIDATE_EMAIL)): $mail->addAddress($recipient[$i]); endif; } } } // add Cc if ($email['email_cc']) { $cc_num = substr_count($email['email_cc'], ';'); $cc = explode(';', $email['email_cc']); for($i=0; $i<=$cc_num; $i++) { if (!empty($cc[$i])) { $mail->addCC($cc[$i]); } } } // add Bcc if ($email['email_bcc']) { $bcc_num = substr_count($email['email_bcc'], ';'); $bcc = explode(';', $email['email_bcc']); for($i=0; $i<=$bcc_num; $i++) { if (!empty($bcc[$i])) { $mail->addBCC($bcc[$i]); } } } echo "\nMail debug :".$mail->SMTPDebug; echo "\nMail Host :".$mail->Host; echo "\nMail SMTP Auth :".$mail->SMTPAuth; echo "\nMail SMTPSecure :".$mail->SMTPSecure; echo "\nMail SMTPPort :".$mail->Port; echo "\nMail Username :".$mail->Username; echo "\nMail Password :".$mail->Password; echo "\nMail Sender :".$mail->Sender; echo "\nMail From :".$mail->From; echo "\nMail FromName :".$mail->FromName; echo "\nMail Subject :".$mail->Subject; echo "\nMail Body :".$mail->Body; echo PHP_EOL; // get attachments $condition = [ 'email_id = '.$email['id'] ]; $attachments = dbget('email_attachments', [], $condition); if ($attachments) { echo 'Mail Attachment :'; foreach ($attachments as $attachmentFile) { $filename = '/var/www/html'.$attachmentFile['path'].'/'.$attachmentFile['filename']; echo "\n".$filename; if (file_exists($filename)) { $mail->addAttachment($filename); } } } // update email status to process $condition = [ 'id' => $email['id'] ]; $data = [ 'email_status_id' => $config['email_status']['process'] ]; $process = dbupdate('emails', $condition, $data); if ($process) { $mail->send(); // update email status to sent $condition = [ 'id' => $email['id'] ]; $data = [ 'email_status_id' => $config['email_status']['sent'] ]; $sent = dbupdate('emails', $condition, $data); if (!$sent) { createLog($config['log_dir'].$config['log_error'], 'Email successfully sent || Error to update status to SENT. Email ID: '.$email['id']); } } else { createLog($config['log_dir'].$config['log_error'], 'Failed to update status to PROCESS || Email not send. Email ID: '.$email['id']); } $mail->clearAddresses(); $mail->clearAttachments(); } catch (Exception $e) { // update email status to error $condition = [ 'id' => $email['id'] ]; $data = [ 'email_status_id' => $config['email_status']['error'], 'mail_error_info' => $mail->ErrorInfo ]; $error = dbupdate('emails', $condition, $data); if (!$error) { createLog($config['log_dir'].$config['log_error'], '[SENDER] '.$mail->ErrorInfo.' || Error to update status to: '.$config['email_status']['error'].'. Email ID: '.$email['id']); } else { createLog($config['log_dir'].$config['log_error'], '[SENDER] '.$mail->ErrorInfo); } exec('php /var/www/html/synergix-experience/email/email_alert.php sender '.$email['id']); echo 'Message could not be sent.'; echo PHP_EOL; echo 'Mailer Error: ' . $mail->ErrorInfo; echo PHP_EOL; } } }