diff --git a/spug_api/apps/setting/views.py b/spug_api/apps/setting/views.py index b281431..fe1f35c 100644 --- a/spug_api/apps/setting/views.py +++ b/spug_api/apps/setting/views.py @@ -5,12 +5,12 @@ import django from django.views.generic import View from django.conf import settings from libs import JsonParser, Argument, json_response +from libs.mail import Mail from apps.account.models import User from apps.setting.utils import AppSetting from apps.setting.models import Setting import platform import ldap -import smtplib class SettingView(View): @@ -55,13 +55,10 @@ def email_test(request): ).parse(request.body) if error is None: try: - if form.port == 465: - server = smtplib.SMTP_SSL(form.server, form.port, timeout=3) - else: - server = smtplib.SMTP(form.server, form.port, timeout=3) - server.login(form.username, form.password) + mail = Mail(**form) + server = mail.get_server() + server.quit() return json_response() - except Exception as e: error = f'{e}' return json_response(error=error) diff --git a/spug_api/libs/mail.py b/spug_api/libs/mail.py index 18afc96..5ea3095 100644 --- a/spug_api/libs/mail.py +++ b/spug_api/libs/mail.py @@ -12,16 +12,20 @@ class Mail: self.password = password self.nickname = nickname - def _get_server(self): + def get_server(self): if self.port == 465: server = smtplib.SMTP_SSL(self.host, self.port) + elif self.port == 587: + server = smtplib.SMTP(self.host, self.port) + server.ehlo() + server.starttls() else: server = smtplib.SMTP(self.host, self.port) server.login(self.user, self.password) return server def send_text_mail(self, receivers, subject, body): - server = self._get_server() + server = self.get_server() msg = MIMEText(body, 'plain', 'utf-8') msg['Subject'] = Header(subject, 'utf-8') msg['From'] = formataddr((self.nickname, self.user)) if self.nickname else self.user