U 系统设置 - 报警设置 - 自定义邮件服务添加在线测试

pull/103/head
zypo 2020-05-17 13:16:45 +08:00
parent 6da1371d28
commit 83098fbd1d
3 changed files with 40 additions and 4 deletions

View File

@ -8,5 +8,6 @@ from .views import *
urlpatterns = [ urlpatterns = [
url(r'^$', SettingView.as_view()), url(r'^$', SettingView.as_view()),
url(r'^ldap_test/$', ldap_test), url(r'^ldap_test/$', ldap_test),
url(r'^email_test/$', email_test),
url(r'^about/$', get_about) url(r'^about/$', get_about)
] ]

View File

@ -9,6 +9,7 @@ from apps.setting.utils import AppSetting
from apps.setting.models import Setting from apps.setting.models import Setting
import platform import platform
import ldap import ldap
import smtplib
class SettingView(View): class SettingView(View):
@ -44,6 +45,24 @@ def ldap_test(request):
return json_response(error=error) return json_response(error=error)
def email_test(request):
form, error = JsonParser(
Argument('server'),
Argument('port', type=int),
Argument('username'),
Argument('password'),
).parse(request.body)
if error is None:
try:
server = smtplib.SMTP_SSL(form.server, form.port)
server.login(form.username, form.password)
return json_response()
except Exception as e:
error = e.smtp_error.decode('utf-8')
return json_response(error=error)
return json_response(error=error)
def get_about(request): def get_about(request):
return json_response({ return json_response({
'python_version': platform.python_version(), 'python_version': platform.python_version(),

View File

@ -19,10 +19,22 @@ class AlarmSetting extends React.Component {
this.setting = JSON.parse(lds.get(store.settings, 'mail_service.value', "{}")); this.setting = JSON.parse(lds.get(store.settings, 'mail_service.value', "{}"));
this.state = { this.state = {
mode: this.setting['server'] === undefined ? '1' : '2', mode: this.setting['server'] === undefined ? '1' : '2',
spug_key: lds.get(store.settings, 'spug_key.value', "") spug_key: lds.get(store.settings, 'spug_key.value', ""),
mail_test_loading: false,
} }
} }
handleEmailTest = () => {
this.props.form.validateFields((error, data) => {
if (!error) {
this.setState({mail_test_loading: true});
http.post('/api/setting/email_test/', data).then(()=> {
message.success('邮件服务连接成功')
}).finally(()=> this.setState({mail_test_loading: false}))
}
})
};
_doSubmit = (formData) => { _doSubmit = (formData) => {
store.loading = true; store.loading = true;
http.post('/api/setting/', {data: formData}) http.post('/api/setting/', {data: formData})
@ -126,11 +138,15 @@ class AlarmSetting extends React.Component {
</Form.Item> </Form.Item>
</div> </div>
</Form.Item> </Form.Item>
<div>
<Button <Button
type="primary" type="danger" loading={this.state.mail_test_loading}
loading={store.loading} style={{ display: mode === '1' ? 'none' : 'inline-block' ,marginRight: 10}}
style={{marginTop: 20}} onClick={this.handleEmailTest}>测试邮件服务</Button>
<Button
type="primary" loading={store.loading} style={{ marginTop: 20}}
onClick={this.handleSubmit}>保存设置</Button> onClick={this.handleSubmit}>保存设置</Button>
</div>
</Form> </Form>
</React.Fragment> </React.Fragment>
) )