fetch_file(); } catch (\Exception $e) { throw new Exception("Could not fetch URL for HTML message: " . $e->getMessage()); } } if ($json["text"]) { $text = $json["text"]; } else if ($json["texturl"]) { try { $textfile = new File($json["texturl"]); $text = $textfile->fetch_file(); } catch (\Exception $e) { throw new Exception("Could not fetch URL for plain text message: " . $e->getMessage()); } } foreach ($json["placeholders"] as $placeholder) { $html = str_replace("{".strtoupper($placeholder["name"])."}", $placeholder["value"], $html); $text = str_replace("{".strtoupper($placeholder["name"])."}", $placeholder["value"], $text); } $mailer->isSMTP(); $mailer->Host = $MAIL_HOST; $mailer->SMTPAuth = (bool) $MAIL_USER; $mailer->Username = $MAIL_USER; $mailer->Password = $MAIL_PASS; $mailer->SMTPSecure = ($MAIL_STARTTLS ? PHPMailer::ENCRYPTION_STARTTLS : ($MAIL_SMTPS ? PHPMailer::ENCRYPTION_SMTPS : false)); $mailer->Port = ($MAIL_PORT ? $MAIL_PORT : ($MAIL_SMTPS ? 465 : 587)); $mailer->XMailer = "Kumi Systems Mailer 0.1 (https://kumi.systems/)"; if ($json["sender"]["email"]) { $mailer->setFrom($json["sender"]["email"], $json["sender"]["name"]); } else { $mailer->setFrom(($MAIL_FROM_MAIL ? $MAIL_FROM_MAIL : $MAIL_USER), $MAIL_FROM_NAME); }; foreach ($json["recipients"] as $recipient) $mailer->addAddress($recipient["email"], $recipient["name"]); foreach ($json["ccs"] as $cc) $mailer->addCC($cc["email"], $cc["name"]); foreach ($json["bccs"] as $bcc) $mailer->addBCC($bcc["email"], $bcc["name"]); foreach ($ALWAYS_TO as $recipient) $mailer->addAddress($recipient); foreach ($ALWAYS_CC as $cc) $mailer->addCC($cc); foreach ($ALWAYS_BCC as $bcc) $mailer->addBCC($bcc); $mailer->isHTML((bool) $html); $mailer->Subject = $json["subject"]; $mailer->Body = ($html ? $html : $text); $mailer->AltBody = ($html ? $text : null); foreach ($json["attachments"] as $attachment) { $file = new File($attachment["url"]); if ($file->get_status() >= 400) throw new Exception("Error downloading " . $attachment["url"] . " - Status: " . $file->get_status()); $content = $file->fetch_file(); $filename = ($attachment["filename"] ? $attachment["filename"] : $file->get_filename()); $cid = ($attachment["cid"] ? $attachment["cid"] : 0); $mailer->addStringEmbeddedImage($content, $cid, $filename); } $mailer->send(); $response = array( "status" => "success" ); } catch (\Exception $e) { $response = array( "status" => "error", "error" => "{$e->getMessage()}" ); }; echo json_encode($response);