[],
'email' => [],
// 默认字段
'default_field' => [],
];
$toData = ToData::get($event, $template, $params);
// 默认字段
$params = array_merge($params, $toData['default_field']);
$content = self::formatParams($template['content'], $params);
$to_id = $toData['to_id'];
try{
// 发送邮件通知
$is = \app\common\library\Email::instance()
->to(implode(',', $toData['email']))
->subject($event['name']?:'邮件通知')
->message('
' . $content . '
')
->send();
if (!$is) {
// 记录日志
$logData = [
'name' => $event['name'].'-邮件发送失败',
'event' => $event->toArray(),
'params' => $params,
'error' => \app\common\library\Email::instance()->getError()
];
Log::error($logData);
}
}catch (\Exception $e) {
// 记录日志
$logData = [
'name' => $event['name'].'-邮件发送失败',
'event' => $event->toArray(),
'params' => $params,
];
Log::catch('邮件发送失败', $e, $logData);
}
return [
'to_id' => $to_id,
'content' => $content,
];
}
// 格式化模板数据
public static function formatParams($content, $params) {
if (preg_match_all("/(?<=({{)).+?(?=}})/", $content, $matches)) {
foreach ($matches[0] as $k => $field) {
$fieldVal = $params[$field] ?? null;
if ($fieldVal !== null) {
$content = str_replace("{{" . $field . "}}", $fieldVal, $content);
}
}
}
return $content;
}
}