From d8f54b94f4057cd222f62109c80733a0e5125d19 Mon Sep 17 00:00:00 2001 From: PedroHenriqueDevBR Date: Wed, 24 Jan 2024 13:42:39 -0300 Subject: [PATCH] feat: custom send mail method --- .gitignore | 268 +----------------- .../apps/core/services/mail/send_mail.py | 102 ++++++- ldap_password/ldap_password/settings/dev.py | 36 ++- 3 files changed, 110 insertions(+), 296 deletions(-) diff --git a/.gitignore b/.gitignore index d9de3c4..4f97f90 100644 --- a/.gitignore +++ b/.gitignore @@ -126,267 +126,7 @@ dmypy.json # Pyre type checker .pyre/ -ldap_password/static_volume/admin/css/autocomplete.css -ldap_password/static_volume/admin/css/base.css -ldap_password/static_volume/admin/css/changelists.css -ldap_password/static_volume/admin/css/dark_mode.css -ldap_password/static_volume/admin/css/dashboard.css -ldap_password/static_volume/admin/css/forms.css -ldap_password/static_volume/admin/css/login.css -ldap_password/static_volume/admin/css/nav_sidebar.css -ldap_password/static_volume/admin/css/responsive_rtl.css -ldap_password/static_volume/admin/css/responsive.css -ldap_password/static_volume/admin/css/rtl.css -ldap_password/static_volume/admin/css/widgets.css -ldap_password/static_volume/admin/css/vendor/select2/LICENSE-SELECT2.md -ldap_password/static_volume/admin/css/vendor/select2/select2.css -ldap_password/static_volume/admin/css/vendor/select2/select2.min.css -ldap_password/static_volume/admin/img/calendar-icons.svg -ldap_password/static_volume/admin/img/icon-addlink.svg -ldap_password/static_volume/admin/img/icon-alert.svg -ldap_password/static_volume/admin/img/icon-calendar.svg -ldap_password/static_volume/admin/img/icon-changelink.svg -ldap_password/static_volume/admin/img/icon-clock.svg -ldap_password/static_volume/admin/img/icon-deletelink.svg -ldap_password/static_volume/admin/img/icon-no.svg -ldap_password/static_volume/admin/img/icon-unknown-alt.svg -ldap_password/static_volume/admin/img/icon-unknown.svg -ldap_password/static_volume/admin/img/icon-viewlink.svg -ldap_password/static_volume/admin/img/icon-yes.svg -ldap_password/static_volume/admin/img/inline-delete.svg -ldap_password/static_volume/admin/img/LICENSE -ldap_password/static_volume/admin/img/README.txt -ldap_password/static_volume/admin/img/search.svg -ldap_password/static_volume/admin/img/selector-icons.svg -ldap_password/static_volume/admin/img/sorting-icons.svg -ldap_password/static_volume/admin/img/tooltag-add.svg -ldap_password/static_volume/admin/img/tooltag-arrowright.svg -ldap_password/static_volume/admin/img/gis/move_vertex_off.svg -ldap_password/static_volume/admin/img/gis/move_vertex_on.svg -ldap_password/static_volume/admin/js/actions.js -ldap_password/static_volume/admin/js/autocomplete.js -ldap_password/static_volume/admin/js/calendar.js -ldap_password/static_volume/admin/js/cancel.js -ldap_password/static_volume/admin/js/change_form.js -ldap_password/static_volume/admin/js/collapse.js -ldap_password/static_volume/admin/js/core.js -ldap_password/static_volume/admin/js/filters.js -ldap_password/static_volume/admin/js/inlines.js -ldap_password/static_volume/admin/js/jquery.init.js -ldap_password/static_volume/admin/js/nav_sidebar.js -ldap_password/static_volume/admin/js/popup_response.js -ldap_password/static_volume/admin/js/prepopulate_init.js -ldap_password/static_volume/admin/js/prepopulate.js -ldap_password/static_volume/admin/js/SelectBox.js -ldap_password/static_volume/admin/js/SelectFilter2.js -ldap_password/static_volume/admin/js/theme.js -ldap_password/static_volume/admin/js/urlify.js -ldap_password/static_volume/admin/js/admin/DateTimeShortcuts.js -ldap_password/static_volume/admin/js/admin/RelatedObjectLookups.js -ldap_password/static_volume/admin/js/vendor/jquery/jquery.js -ldap_password/static_volume/admin/js/vendor/jquery/jquery.min.js -ldap_password/static_volume/admin/js/vendor/jquery/LICENSE.txt -ldap_password/static_volume/admin/js/vendor/select2/LICENSE.md -ldap_password/static_volume/admin/js/vendor/select2/select2.full.js -ldap_password/static_volume/admin/js/vendor/select2/select2.full.min.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/af.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/ar.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/az.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/bg.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/bn.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/bs.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/ca.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/cs.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/da.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/de.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/dsb.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/el.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/en.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/es.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/et.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/eu.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/fa.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/fi.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/fr.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/gl.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/he.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/hi.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/hr.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/hsb.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/hu.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/hy.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/id.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/is.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/it.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/ja.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/ka.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/km.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/ko.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/lt.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/lv.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/mk.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/ms.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/nb.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/ne.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/nl.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/pl.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/ps.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/pt-BR.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/pt.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/ro.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/ru.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/sk.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/sl.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/sq.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/sr-Cyrl.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/sr.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/sv.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/th.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/tk.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/tr.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/uk.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/vi.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/zh-CN.js -ldap_password/static_volume/admin/js/vendor/select2/i18n/zh-TW.js -ldap_password/static_volume/admin/js/vendor/xregexp/LICENSE.txt -ldap_password/static_volume/admin/js/vendor/xregexp/xregexp.js -ldap_password/static_volume/admin/js/vendor/xregexp/xregexp.min.js -ldap_password/static_volume/css/bootstrap.min.css -ldap_password/static_volume/css/custom.css -ldap_password/static_volume/css/font-awesome-all.min.css -ldap_password/static_volume/images/logo.png -ldap_password/static_volume/js/bootstrap.bundle.min.js -ldap_password/static_volume/js/jquery.min.js -ldap_password/staticfiles/admin/css/autocomplete.css -ldap_password/staticfiles/admin/css/base.css -ldap_password/staticfiles/admin/css/changelists.css -ldap_password/staticfiles/admin/css/dark_mode.css -ldap_password/staticfiles/admin/css/dashboard.css -ldap_password/staticfiles/admin/css/forms.css -ldap_password/staticfiles/admin/css/login.css -ldap_password/staticfiles/admin/css/nav_sidebar.css -ldap_password/staticfiles/admin/css/responsive_rtl.css -ldap_password/staticfiles/admin/css/responsive.css -ldap_password/staticfiles/admin/css/rtl.css -ldap_password/staticfiles/admin/css/widgets.css -ldap_password/staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.md -ldap_password/staticfiles/admin/css/vendor/select2/select2.css -ldap_password/staticfiles/admin/css/vendor/select2/select2.min.css -ldap_password/staticfiles/admin/img/calendar-icons.svg -ldap_password/staticfiles/admin/img/icon-addlink.svg -ldap_password/staticfiles/admin/img/icon-alert.svg -ldap_password/staticfiles/admin/img/icon-calendar.svg -ldap_password/staticfiles/admin/img/icon-changelink.svg -ldap_password/staticfiles/admin/img/icon-clock.svg -ldap_password/staticfiles/admin/img/icon-deletelink.svg -ldap_password/staticfiles/admin/img/icon-no.svg -ldap_password/staticfiles/admin/img/icon-unknown-alt.svg -ldap_password/staticfiles/admin/img/icon-unknown.svg -ldap_password/staticfiles/admin/img/icon-viewlink.svg -ldap_password/staticfiles/admin/img/icon-yes.svg -ldap_password/staticfiles/admin/img/inline-delete.svg -ldap_password/staticfiles/admin/img/LICENSE -ldap_password/staticfiles/admin/img/README.txt -ldap_password/staticfiles/admin/img/search.svg -ldap_password/staticfiles/admin/img/selector-icons.svg -ldap_password/staticfiles/admin/img/sorting-icons.svg -ldap_password/staticfiles/admin/img/tooltag-add.svg -ldap_password/staticfiles/admin/img/tooltag-arrowright.svg -ldap_password/staticfiles/admin/img/gis/move_vertex_off.svg -ldap_password/staticfiles/admin/img/gis/move_vertex_on.svg -ldap_password/staticfiles/admin/js/actions.js -ldap_password/staticfiles/admin/js/autocomplete.js -ldap_password/staticfiles/admin/js/calendar.js -ldap_password/staticfiles/admin/js/cancel.js -ldap_password/staticfiles/admin/js/change_form.js -ldap_password/staticfiles/admin/js/collapse.js -ldap_password/staticfiles/admin/js/core.js -ldap_password/staticfiles/admin/js/filters.js -ldap_password/staticfiles/admin/js/inlines.js -ldap_password/staticfiles/admin/js/jquery.init.js -ldap_password/staticfiles/admin/js/nav_sidebar.js -ldap_password/staticfiles/admin/js/popup_response.js -ldap_password/staticfiles/admin/js/prepopulate_init.js -ldap_password/staticfiles/admin/js/prepopulate.js -ldap_password/staticfiles/admin/js/SelectBox.js -ldap_password/staticfiles/admin/js/SelectFilter2.js -ldap_password/staticfiles/admin/js/theme.js -ldap_password/staticfiles/admin/js/urlify.js -ldap_password/staticfiles/admin/js/admin/DateTimeShortcuts.js -ldap_password/staticfiles/admin/js/admin/RelatedObjectLookups.js -ldap_password/staticfiles/admin/js/vendor/jquery/jquery.js -ldap_password/staticfiles/admin/js/vendor/jquery/jquery.min.js -ldap_password/staticfiles/admin/js/vendor/jquery/LICENSE.txt -ldap_password/staticfiles/admin/js/vendor/select2/LICENSE.md -ldap_password/staticfiles/admin/js/vendor/select2/select2.full.js -ldap_password/staticfiles/admin/js/vendor/select2/select2.full.min.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/af.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/ar.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/az.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/bg.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/bn.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/bs.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/ca.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/cs.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/da.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/de.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/dsb.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/el.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/en.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/es.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/et.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/eu.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/fa.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/fi.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/fr.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/gl.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/he.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/hi.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/hr.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/hsb.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/hu.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/hy.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/id.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/is.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/it.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/ja.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/ka.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/km.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/ko.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/lt.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/lv.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/mk.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/ms.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/nb.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/ne.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/nl.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/pl.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/ps.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/pt-BR.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/pt.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/ro.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/ru.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/sk.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/sl.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/sq.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/sr-Cyrl.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/sr.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/sv.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/th.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/tk.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/tr.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/uk.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/vi.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/zh-CN.js -ldap_password/staticfiles/admin/js/vendor/select2/i18n/zh-TW.js -ldap_password/staticfiles/admin/js/vendor/xregexp/LICENSE.txt -ldap_password/staticfiles/admin/js/vendor/xregexp/xregexp.js -ldap_password/staticfiles/admin/js/vendor/xregexp/xregexp.min.js -ldap_password/staticfiles/css/bootstrap.min.css -ldap_password/staticfiles/css/custom.css -ldap_password/staticfiles/css/font-awesome-all.min.css -ldap_password/staticfiles/images/logo.png -ldap_password/staticfiles/js/bootstrap.bundle.min.js -ldap_password/staticfiles/js/jquery.min.js -ldap_password/dockerfiles/nginx/cert/ca.cer -ldap_password/dockerfiles/nginx/cert/ca.key +ldap_password/static_volume/* +ldap_password/staticfiles/* +ldap_password/dockerfiles/nginx/cert/* +ldap_password/temp/* diff --git a/ldap_password/apps/core/services/mail/send_mail.py b/ldap_password/apps/core/services/mail/send_mail.py index b9cc84c..9e7b309 100644 --- a/ldap_password/apps/core/services/mail/send_mail.py +++ b/ldap_password/apps/core/services/mail/send_mail.py @@ -1,20 +1,91 @@ from django.conf import settings -from django.core.mail import send_mail + +# from django.core.mail import send_mail +import smtplib +import email.utils +from email.message import EmailMessage +import ssl + + +class CustomMailBackend: + def send_mail(self, subject: str, message: str, to: str) -> None: + SENDERNAME = "Não Responda" + RECIPIENT = to + SENDER = settings.DEFAULT_FROM_EMAIL + USERNAME_SMTP = settings.EMAIL_HOST_USER + password_smtp = settings.EMAIL_HOST_PASSWORD + HOST = settings.EMAIL_HOST + PORT = settings.EMAIL_PORT + SUBJECT = subject + + # The email body for recipients with non-HTML email clients. + BODY_TEXT = ( + "Defensoria Pública do Estado do Piauí\r\n" + + "Esse é um e-mail confidencial, não o repasse para ninguém.\n" + + message + ) + + # The HTML body of the email. + BODY_HTML = """ + + +

Defensoria Pública do Estado do Piauí

+

+ Esse é um e-mail confidencial, não o repasse para ninguém.
+ {} +

+ + """.format( + message + ) + + msg = EmailMessage() + msg["Subject"] = SUBJECT + msg["From"] = email.utils.formataddr((SENDERNAME, SENDER)) + msg["To"] = RECIPIENT + + msg.add_alternative(BODY_TEXT, subtype="text") + msg.add_alternative(BODY_HTML, subtype="html") + + try: + server = smtplib.SMTP(HOST, PORT) + server.ehlo() + server.starttls( + context=ssl.create_default_context( + purpose=ssl.Purpose.SERVER_AUTH, cafile=None, capath=None + ) + ) + server.ehlo() + server.login(USERNAME_SMTP, password_smtp) + server.sendmail(SENDER, RECIPIENT, msg.as_string()) + server.close() + except Exception as e: + print(f"Error: {e}") + else: + print("Email successfully sent!") class MailService: + def __init__(self) -> None: + self.mail_service = CustomMailBackend() + def send_token(self, to: str, token: str) -> None: subject = "NO REPPLY" mail_body = "Token para recuperação de senha: {}".format(token) - send_mail( + self.mail_service.send_mail( subject=subject, message=mail_body, - from_email=settings.EMAIL_HOST_USER, - recipient_list=[ - to, - ], - fail_silently=False, + to=to, ) + # send_mail( + # subject=subject, + # message=mail_body, + # from_email=settings.EMAIL_HOST_USER, + # recipient_list=[ + # to, + # ], + # fail_silently=False, + # ) def send_password(self, to: str, password: str) -> None: subject = "NO REPPLY" @@ -23,12 +94,17 @@ def send_password(self, to: str, password: str) -> None: password, ) ) - send_mail( + self.mail_service.send_mail( subject=subject, message=mail_body, - from_email=settings.EMAIL_HOST_USER, - recipient_list=[ - to, - ], - fail_silently=False, + to=to, ) + # send_mail( + # subject=subject, + # message=mail_body, + # from_email=settings.EMAIL_HOST_USER, + # recipient_list=[ + # to, + # ], + # fail_silently=False, + # ) diff --git a/ldap_password/ldap_password/settings/dev.py b/ldap_password/ldap_password/settings/dev.py index 4969386..06bbb57 100644 --- a/ldap_password/ldap_password/settings/dev.py +++ b/ldap_password/ldap_password/settings/dev.py @@ -1,12 +1,10 @@ from ldap_password.settings.base import * -import environ +from decouple import config # Envoiroments load -env = environ.Env() -environ.Env.read_env(".env") # General settings -SECRET_KEY = env("APP_SECRET_KEY") +SECRET_KEY = config("APP_SECRET_KEY") DEBUG = True # Database @@ -21,22 +19,22 @@ } # App metadata -ENTERPRISE_NAME = env("ENTERPRISE_NAME") -SUCCESS_REDIRECT_URL = env("SUCCESS_REDIRECT_URL") +ENTERPRISE_NAME = config("ENTERPRISE_NAME") +SUCCESS_REDIRECT_URL = config("SUCCESS_REDIRECT_URL") # AD Connection details -LDAP_URL = env("LDAP_URL") -LDAP_PORT = int(env("LDAP_PORT")) -LDAP_BASE = env("LDAP_BASE") -LDAP_DOMAIN = env("LDAP_DOMAIN") -LDAP_LOGON_DOMAIN_NAME = env("LDAP_LOGON_DOMAIN_NAME") -LDAP_SERVICE_BIND_DN = env("LDAP_SERVICE_BIND_DN") -LDAP_SERVICE_SAM_ACCOUNT_NAME = env("LDAP_SERVICE_SAM_ACCOUNT_NAME") -LDAP_SERVICE_PASSWORD = env("LDAP_SERVICE_PASSWORD") +LDAP_URL = config("LDAP_URL") +LDAP_PORT = int(config("LDAP_PORT")) +LDAP_BASE = config("LDAP_BASE") +LDAP_DOMAIN = config("LDAP_DOMAIN") +LDAP_LOGON_DOMAIN_NAME = config("LDAP_LOGON_DOMAIN_NAME") +LDAP_SERVICE_BIND_DN = config("LDAP_SERVICE_BIND_DN") +LDAP_SERVICE_SAM_ACCOUNT_NAME = config("LDAP_SERVICE_SAM_ACCOUNT_NAME") +LDAP_SERVICE_PASSWORD = config("LDAP_SERVICE_PASSWORD") # Mail -EMAIL_HOST = env("EMAIL_HOST") -EMAIL_PORT = int(env("EMAIL_PORT")) -DEFAULT_FROM_EMAIL = env("EMAIL_DEFAULT_FROM") -EMAIL_HOST_USER = env("EMAIL_HOST_USER") -EMAIL_HOST_PASSWORD = env("EMAIL_HOST_PASSWORD") +EMAIL_HOST = config("EMAIL_HOST") +EMAIL_PORT = int(config("EMAIL_PORT")) +DEFAULT_FROM_EMAIL = config("EMAIL_DEFAULT_FROM") +EMAIL_HOST_USER = config("EMAIL_HOST_USER") +EMAIL_HOST_PASSWORD = config("EMAIL_HOST_PASSWORD")