diff --git a/spug_api/apps/setting/urls.py b/spug_api/apps/setting/urls.py index c18fc4e..737cbae 100644 --- a/spug_api/apps/setting/urls.py +++ b/spug_api/apps/setting/urls.py @@ -8,5 +8,6 @@ from .views import * urlpatterns = [ url(r'^$', SettingView.as_view()), url(r'^ldap_test/$', ldap_test), + url(r'^email_test/$', email_test), url(r'^about/$', get_about) ] diff --git a/spug_api/apps/setting/views.py b/spug_api/apps/setting/views.py index 3bc642d..d13532f 100644 --- a/spug_api/apps/setting/views.py +++ b/spug_api/apps/setting/views.py @@ -9,6 +9,7 @@ from apps.setting.utils import AppSetting from apps.setting.models import Setting import platform import ldap +import smtplib class SettingView(View): @@ -44,6 +45,24 @@ def ldap_test(request): 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): return json_response({ 'python_version': platform.python_version(), diff --git a/spug_web/src/pages/system/setting/AlarmSetting.js b/spug_web/src/pages/system/setting/AlarmSetting.js index eda3b00..91f755a 100644 --- a/spug_web/src/pages/system/setting/AlarmSetting.js +++ b/spug_web/src/pages/system/setting/AlarmSetting.js @@ -19,10 +19,22 @@ class AlarmSetting extends React.Component { this.setting = JSON.parse(lds.get(store.settings, 'mail_service.value', "{}")); this.state = { 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) => { store.loading = true; http.post('/api/setting/', {data: formData}) @@ -126,11 +138,15 @@ class AlarmSetting extends React.Component { +