select(); $info = convert_arr_kv($smtp,'name','value'); return FormBuilder::getInstance() ->addText('smtp_server', '服务器') ->addText('smtp_port', 'SMTP端口') ->addText('email_id', '发件人') ->addText('smtp_user', '发件邮箱') ->addPassword('smtp_pwd', '身份验证码') ->addText('regis_smtp_enable', '标题') ->addText('test_eamil', '测试邮箱') ->addEditor('test_eamil_info', '测试邮件内容', '', '', '100') ->setFormData($info) ->setFormUrl(url('emailPost')) ->hideBtn('back') ->addBtn('') ->setExtraHtml($this->getEmailExtraHtml(), 'content_bottom') ->setPageTips('
系统采用SMTP方式发送邮件
', 'success', 'search') ->hideShowAll() ->fetch(); } // 邮件配置保存 public function emailPost() { if (Request::isPost()) { $data = Request::post(); foreach ($data as $k => $v) { $result = \app\common\model\Config::where([['name', '=', $k], ['inc_type', '=', 'smtp']])->find(); if ($k == 'smtp_pwd') { if (!empty($v)) { $result->value = $v; } } else { $result->value = $v; } $result->save(); } $this->success('修改成功', 'email'); } } // 测试邮件发送 public function emailSend(){ $sender = Request::param('email'); //检查是否邮箱格式 if (!is_email($sender)) { return json(['error' => 1, 'msg' => '测试邮箱码格式有误']); } $data = \app\common\model\Config::where('inc_type','smtp') ->select(); $config = convert_arr_kv($data,'name','value'); $content = $config['test_eamil_info']; //所有项目必须填写 if (empty($config['smtp_server']) || empty($config['smtp_port']) || empty($config['smtp_user']) || empty($config['smtp_pwd'])) { return json(['error' => 1, 'msg' => '请完善邮件配置信息!']); } $send = send_email($sender, '测试邮件',$content); if ($send) { return ['error' => 0, 'msg' => '邮件发送成功!']; } else { return ['error' => 1, 'msg' => '邮件发送失败!']; } } // 获取邮件配置额外HTML private function getEmailExtraHtml() { $str = ' '; return $str; } // ========================================== // 短信配置 public function sms(){ $smtp = \app\common\model\Config::where('inc_type','=','sms') ->select(); $info = convert_arr_kv($smtp,'name','value'); return FormBuilder::getInstance() ->addText('accessKeyId', 'AccessKey ID', ' 【创建】 【查看】') ->addText('accessKeySecret', '密钥secret') ->addText('signName', '签名名称', ' 【签名简介】 【查看签名】') ->addText('templateCode', '模版CODE', ' 【查看模版】') ->addText('test_mobile', '测试手机') ->setFormData($info) ->setFormUrl(url('smsPost')) ->hideBtn('back') ->addBtn('') ->setExtraHtml($this->getSmsExtraHtml(), 'content_bottom') ->setPageTips('
系统采用阿里云短信服务发送短信 查看错误码使用指引
', 'success', 'search') ->hideShowAll() ->fetch(); } // 短信配置保存 public function smsPost() { if (Request::isPost()) { $data = Request::post(); foreach ($data as $k => $v) { \app\common\model\Config::where([ ['name', '=', $k], ['inc_type', '=', 'sms'] ]) ->update(['value' => $v]); } $this->success('保存成功', 'sms'); } } // 测试短信发送 public function smsSend() { $data = \app\common\model\Config::where('inc_type', 'sms')->select(); $config = convert_arr_kv($data, 'name', 'value'); // 生成验证码 $code = json_encode(['code' => rand(1000, 9999)]); // 新版发送 AlibabaCloud::accessKeyClient($config['accessKeyId'], $config['accessKeySecret']) ->regionId('cn-hangzhou') ->asDefaultClient(); try { $result = AlibabaCloud::rpc() ->product('Dysmsapi') // ->scheme('https') // https | http ->version('2017-05-25') ->action('SendSms') ->method('POST') ->host('dysmsapi.aliyuncs.com') ->options([ 'query' => [ 'RegionId' => "cn-hangzhou", 'PhoneNumbers' => $config['test_mobile'], 'SignName' => $config['signName'], 'TemplateCode' => $config['templateCode'], 'TemplateParam' => $code, ], ]) ->request(); $resultArr = $result->toArray(); if ($resultArr['Code'] == 'OK') { return json(['error' => 0, 'msg' => '发送成功']); } else { return json(['error' => 1, 'msg' => $resultArr['Message']]); } } catch (ClientException $e) { return json(['error' => 1, 'msg' => $e->getErrorMessage()]); } catch (ServerException $e) { return json(['error' => 1, 'msg' => $e->getErrorMessage()]); } } // 获取短信配置额外HTML private function getSmsExtraHtml(){ $str = ' '; return $str; } }