Я пытаюсь изменить существующую функцию электронной почты PHP на платформе Yeti CRM.Прямо сейчас функция sendFromTemplate ($ params) принимает собранные переменные формы (хранящиеся в $ params) и отправляет их другой функции, которая записывает ее в таблицу базы данных, которая ставится в очередь и отправляется каждые пять минут.Я пытаюсь использовать PHPMailer или собственный PHP для прямой отправки электронной почты, но получаю ошибки.
В коде я закомментировал функцию addMail, которая создает очередь данных и вместо этого устанавливает $ params = $ mailer-> send ().Я получаю сообщение об ошибке: «PHP Fatal error: Uncaught Error: вызов функции-члена send () для null.
Другой код, который я пробовал, и ошибка
$ params = $ mailer-> send ($ params); Неустранимая ошибка PHP: необработанная ошибка: вызов функции-члена send () со значением null
$ params-> mailer-> send (); Неустранимая ошибка PHP: необработанная ошибка: вызовк функции-члену send () со значением NULL
return ['result' => $ params-> send (), 'error' => implode (PHP_EOL, $ params-> error)]; PHP фатальная ошибка: Uncaught Error: вызов функции-члена send () для массива
Вот функция, которую я изменяю.
public static function sendFromTemplate($params)
{
Log::warning('Send mail from template', 'Mailer');
//error_log('Testing - sendFromTemplate');
if (empty($params['template'])) {
Log::warning('No templete', 'Mailer');
return false;
}
$recordModel = false;
if (empty($params['recordModel'])) {
$moduleName = $params['moduleName'] ?? null;
if (isset($params['recordId'])) {
$recordModel = \Vtiger_Record_Model::getInstanceById($params['recordId'], $moduleName);
}
} else {
$recordModel = $params['recordModel'];
}
//error_log('Template Name: ' . $params['template']);
$template = Mail::getTemplete($params['template']);
//error_log('Testing - template: ' . print_r($template, false));
if (!$template) {
Log::warning('No mail templete', 'Mailer');
return false;
}
//error_log('have a template and all');
$textParser = $recordModel ? TextParser::getInstanceByModel($recordModel) : TextParser::getInstance($params['moduleName'] ?? '');
if (!empty($params['language'])) {
$textParser->setLanguage($params['language']);
}
if (!empty($params['sourceRecord'])) {
$textParser->setSourceRecord($params['sourceRecord'], $params['sourceModule']);
}
$textParser->setParams(array_diff_key($params, array_flip(['subject', 'content', 'attachments', 'recordModel'])));
$params['subject'] = $textParser->setContent($template['subject'])->parse()->getContent();
$params['content'] = $textParser->setContent($template['content'])->parse()->getContent();
//Added to allow for something extra from customer service.
$params['content'] = str_replace("$(zcoMessage)", $params['message'], $params['content']);
unset($textParser);
if (empty($params['smtp_id']) && isset($template['smtp_id'])) {
$params['smtp_id'] = $template['smtp_id'];
}
if (isset($template['attachments'])) {
$params['attachments'] = array_merge(empty($params['attachments']) ? [] : $params['attachments'], $template['attachments']);
}
if (!empty($template['email_template_priority'])) {
$params['priority'] = $template['email_template_priority'];
}
$params = $mailer->send();
return true;
//return static::addMail(array_intersect_key($params, array_flip(static::$quoteColumn)));
}
Я понятия не имею, что я делаю неправильно на этом этапепоэтому любой вклад будет оценен. Мне просто нужно отправить электронное письмо.