fix issues

pull/410/head
vapao 2021-09-18 00:04:36 +08:00
parent bcd44bc0f8
commit c5b3aadcf9
2 changed files with 10 additions and 9 deletions

View File

@ -5,12 +5,12 @@ import django
from django.views.generic import View from django.views.generic import View
from django.conf import settings from django.conf import settings
from libs import JsonParser, Argument, json_response from libs import JsonParser, Argument, json_response
from libs.mail import Mail
from apps.account.models import User from apps.account.models import User
from apps.setting.utils import AppSetting 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):
@ -55,13 +55,10 @@ def email_test(request):
).parse(request.body) ).parse(request.body)
if error is None: if error is None:
try: try:
if form.port == 465: mail = Mail(**form)
server = smtplib.SMTP_SSL(form.server, form.port, timeout=3) server = mail.get_server()
else: server.quit()
server = smtplib.SMTP(form.server, form.port, timeout=3)
server.login(form.username, form.password)
return json_response() return json_response()
except Exception as e: except Exception as e:
error = f'{e}' error = f'{e}'
return json_response(error=error) return json_response(error=error)

View File

@ -12,16 +12,20 @@ class Mail:
self.password = password self.password = password
self.nickname = nickname self.nickname = nickname
def _get_server(self): def get_server(self):
if self.port == 465: if self.port == 465:
server = smtplib.SMTP_SSL(self.host, self.port) server = smtplib.SMTP_SSL(self.host, self.port)
elif self.port == 587:
server = smtplib.SMTP(self.host, self.port)
server.ehlo()
server.starttls()
else: else:
server = smtplib.SMTP(self.host, self.port) server = smtplib.SMTP(self.host, self.port)
server.login(self.user, self.password) server.login(self.user, self.password)
return server return server
def send_text_mail(self, receivers, subject, body): def send_text_mail(self, receivers, subject, body):
server = self._get_server() server = self.get_server()
msg = MIMEText(body, 'plain', 'utf-8') msg = MIMEText(body, 'plain', 'utf-8')
msg['Subject'] = Header(subject, 'utf-8') msg['Subject'] = Header(subject, 'utf-8')
msg['From'] = formataddr((self.nickname, self.user)) if self.nickname else self.user msg['From'] = formataddr((self.nickname, self.user)) if self.nickname else self.user