site_info[$siteid]['SITE_NAME'])) { $this->site_name = \Phpcmf\Service::C()->site_info[$siteid]['SITE_NAME']; } return $this; } /** * 邮件发送 */ public function sendmail($tomail, $subject, $msg, $data = []) { if (!$tomail) { return dr_return_data(0, dr_lang('第一个参数不能为空')); } elseif (!$subject) { return dr_return_data(0, dr_lang('第二个参数不能为空')); } elseif (!$msg) { return dr_return_data(0, dr_lang('第三个参数不能为空')); } $cache = \Phpcmf\Service::L('cache')->get('email'); if (!$cache) { return dr_return_data(0, dr_lang('无邮件smtp配置')); } $content = $msg; if (strlen($msg) <= 30 && trim(strtolower(strrchr($msg, '.')), '.') == 'html') { $my = WEBPATH.'config/notice/email/'.$msg; $default = CONFIGPATH.'notice/email/'.$msg; $content = is_file($my) ? file_get_contents($my) : file_get_contents($default); if (!$content) { log_message('error', '邮件模板不存在:'.$msg); return dr_return_data(0, dr_lang('邮件模板[#%s]不存在', $msg)); } ob_start(); extract($data, EXTR_PREFIX_SAME, 'data'); $file = \Phpcmf\Service::V()->code2php($content); require $file; $content = ob_get_clean(); } $dmail = \Phpcmf\Service::L('email'); foreach ($cache as $data) { $dmail->set(array( 'host' => trim($data['host']), 'user' => trim($data['user']), 'pass' => trim($data['pass']), 'port' => $data['port'], 'from' => $data['user'], )); if ($dmail->send($tomail, $subject, $content, $this->site_name)) { return dr_return_data(1, 'ok'); } } return dr_return_data(0, '邮件发送失败:'.$dmail->error); } // 缓存 public function cache($site = SITE_ID) { $data = $this->table('mail_smtp')->order_by('displayorder asc')->getAll(); $cache = []; if ($data) { foreach ($data as $t) { $cache[$t['id']] = $t; } } \Phpcmf\Service::L('cache')->set_file('email', $cache); } }