From 83db0355f3a51652900b29b113d770fd3fab1e5b Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Fri, 16 May 2025 22:21:24 -0700 Subject: [PATCH] Chore: automatically disable email verification if no smtp setup (#9949) --- docs/configuration.md | 2 +- src/paperless/settings.py | 46 +++++++++++++++++++++------------------ 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 1a0f15a6c..4196ffa8f 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -629,7 +629,7 @@ If both the [PAPERLESS_ACCOUNT_DEFAULT_GROUPS](#PAPERLESS_ACCOUNT_DEFAULT_GROUPS !!! note - If you do not have a working email server set up you should set this to 'none'. + If you do not have a working email server set up this will be set to 'none'. #### [`PAPERLESS_ACCOUNT_EMAIL_UNKNOWN_ACCOUNTS=`](#PAPERLESS_ACCOUNT_EMAIL_UNKNOWN_ACCOUNTS) {#PAPERLESS_ACCOUNT_EMAIL_UNKNOWN_ACCOUNTS} diff --git a/src/paperless/settings.py b/src/paperless/settings.py index 4906b4713..3e6e76f11 100644 --- a/src/paperless/settings.py +++ b/src/paperless/settings.py @@ -462,6 +462,24 @@ CHANNEL_LAYERS = { }, } +############################################################################### +# Email (SMTP) Backend # +############################################################################### + +EMAIL_HOST: Final[str] = os.getenv("PAPERLESS_EMAIL_HOST", "localhost") +EMAIL_PORT: Final[int] = int(os.getenv("PAPERLESS_EMAIL_PORT", 25)) +EMAIL_HOST_USER: Final[str] = os.getenv("PAPERLESS_EMAIL_HOST_USER", "") +EMAIL_HOST_PASSWORD: Final[str] = os.getenv("PAPERLESS_EMAIL_HOST_PASSWORD", "") +DEFAULT_FROM_EMAIL: Final[str] = os.getenv("PAPERLESS_EMAIL_FROM", EMAIL_HOST_USER) +EMAIL_USE_TLS: Final[bool] = __get_boolean("PAPERLESS_EMAIL_USE_TLS") +EMAIL_USE_SSL: Final[bool] = __get_boolean("PAPERLESS_EMAIL_USE_SSL") +EMAIL_SUBJECT_PREFIX: Final[str] = "[Paperless-ngx] " +EMAIL_TIMEOUT = 30.0 +EMAIL_ENABLED = EMAIL_HOST != "localhost" or EMAIL_HOST_USER != "" +if DEBUG: # pragma: no cover + EMAIL_BACKEND = "django.core.mail.backends.filebased.EmailBackend" + EMAIL_FILE_PATH = BASE_DIR / "sent_emails" + ############################################################################### # Security # ############################################################################### @@ -503,9 +521,13 @@ REDIRECT_LOGIN_TO_SSO = __get_boolean("PAPERLESS_REDIRECT_LOGIN_TO_SSO") AUTO_LOGIN_USERNAME = os.getenv("PAPERLESS_AUTO_LOGIN_USERNAME") -ACCOUNT_EMAIL_VERIFICATION = os.getenv( - "PAPERLESS_ACCOUNT_EMAIL_VERIFICATION", - "optional", +ACCOUNT_EMAIL_VERIFICATION = ( + "none" + if not EMAIL_ENABLED + else os.getenv( + "PAPERLESS_ACCOUNT_EMAIL_VERIFICATION", + "optional", + ) ) ACCOUNT_EMAIL_UNKNOWN_ACCOUNTS = __get_boolean( @@ -1220,24 +1242,6 @@ NLTK_ENABLED: Final[bool] = __get_boolean("PAPERLESS_ENABLE_NLTK", "yes") NLTK_LANGUAGE: str | None = _get_nltk_language_setting(OCR_LANGUAGE) -############################################################################### -# Email (SMTP) Backend # -############################################################################### - -EMAIL_HOST: Final[str] = os.getenv("PAPERLESS_EMAIL_HOST", "localhost") -EMAIL_PORT: Final[int] = int(os.getenv("PAPERLESS_EMAIL_PORT", 25)) -EMAIL_HOST_USER: Final[str] = os.getenv("PAPERLESS_EMAIL_HOST_USER", "") -EMAIL_HOST_PASSWORD: Final[str] = os.getenv("PAPERLESS_EMAIL_HOST_PASSWORD", "") -DEFAULT_FROM_EMAIL: Final[str] = os.getenv("PAPERLESS_EMAIL_FROM", EMAIL_HOST_USER) -EMAIL_USE_TLS: Final[bool] = __get_boolean("PAPERLESS_EMAIL_USE_TLS") -EMAIL_USE_SSL: Final[bool] = __get_boolean("PAPERLESS_EMAIL_USE_SSL") -EMAIL_SUBJECT_PREFIX: Final[str] = "[Paperless-ngx] " -EMAIL_TIMEOUT = 30.0 -EMAIL_ENABLED = EMAIL_HOST != "localhost" or EMAIL_HOST_USER != "" -if DEBUG: # pragma: no cover - EMAIL_BACKEND = "django.core.mail.backends.filebased.EmailBackend" - EMAIL_FILE_PATH = BASE_DIR / "sent_emails" - ############################################################################### # Email Preprocessors # ###############################################################################