You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gcgj-dify-1.7.0/api/extensions
-LAN- 091884567a
feat: Add SMTP OAuth 2.0 support for Microsoft Exchange
Add comprehensive OAuth 2.0 authentication support for SMTP to address
Microsoft's Basic Authentication retirement in September 2025.

Key features:
- OAuth 2.0 SASL XOAUTH2 authentication mechanism
- Microsoft Azure AD integration with client credentials flow
- Backward compatible with existing basic authentication
- Comprehensive configuration options in .env.example files
- Enhanced SMTP client with dependency injection for better testability
- Complete test coverage with proper mocking

Configuration:
- SMTP_AUTH_TYPE: Choose between 'basic' and 'oauth2' authentication
- Microsoft OAuth 2.0 settings for Azure AD integration
- Automatic token acquisition using client credentials flow

Files changed:
- Enhanced SMTP client with OAuth 2.0 support
- New mail module structure under libs/mail/
- Updated configuration system with OAuth settings
- Comprehensive documentation and setup instructions
- Complete test suite for OAuth functionality

This change ensures compatibility with Microsoft Exchange Online
after Basic Authentication retirement.
7 months ago
..
storage Fix/replace datetime patterns with naive utc now (#22654) 7 months ago
__init__.py feat: mypy for all type check (#10921) 1 year ago
ext_app_metrics.py refactor: define the Dify project version in pyproject.toml (#20910) 7 months ago
ext_blueprints.py feat: add MCP support (#20716) 7 months ago
ext_celery.py Add Env 'CELERY_SENTINEL_PASSWORD' for celery connect redis sentinel. (#21198) 7 months ago
ext_code_based_extension.py refactor: assembling the app features in modular way (#9129) 1 year ago
ext_commands.py Support OAuth Integration for Plugin Tools (#22550) 7 months ago
ext_compress.py feat: mypy for all type check (#10921) 1 year ago
ext_database.py chore(db): use a better way to export models and remove unused table (#11838) 1 year ago
ext_hosting_provider.py refactor: assembling the app features in modular way (#9129) 1 year ago
ext_import_modules.py chore(db): use a better way to export models and remove unused table (#11838) 1 year ago
ext_logging.py fix:fix log formatting field not found in record: 'req_id' (#19575) 9 months ago
ext_login.py feat: add MCP support (#20716) 7 months ago
ext_mail.py feat: Add SMTP OAuth 2.0 support for Microsoft Exchange 7 months ago
ext_migrate.py feat: mypy for all type check (#10921) 1 year ago
ext_otel.py minor bug fix: wrong default metrics endpoint (#22535) 7 months ago
ext_proxy_fix.py feat: add support for X-Forwarded-Port in ProxyFix middleware (#13102) 12 months ago
ext_redis.py feat: add redis fallback mechanism #21043 (#21044) 7 months ago
ext_request_logging.py feat: add debug log for request and response (#19781) (#19783) 9 months ago
ext_sentry.py refactor: define the Dify project version in pyproject.toml (#20910) 7 months ago
ext_set_secretkey.py refactor: assembling the app features in modular way (#9129) 1 year ago
ext_storage.py feat: add administrative commands to free up storage space by removing unused files (#18835) 9 months ago
ext_timezone.py refactor: assembling the app features in modular way (#9129) 1 year ago
ext_warnings.py refactor: assembling the app features in modular way (#9129) 1 year ago