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/libs
-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
..
mail feat: Add SMTP OAuth 2.0 support for Microsoft Exchange 7 months ago
__init__.py chore: apply ruff rules on tests and app.py (#3605) 2 years ago
datetime_utils.py feat: Persist Variables for Enhanced Debugging Workflow (#20699) 8 months ago
exception.py chore(api/libs): Apply ruff format. (#7301) 1 year ago
external_api.py chore: avoid repeated type ignore noqa by adding flask_restful and flask_login in mypy import exclusions (#19224) 9 months ago
file_utils.py refactor: define the Dify project version in pyproject.toml (#20910) 7 months ago
flask_utils.py feat: add a flask_context_manager. (#21061) 8 months ago
gmpy2_pkcs10aep_cipher.py feat: mypy for all type check (#10921) 1 year ago
helper.py fix: drop dead code phase2 unused class (#22042) 7 months ago
infinite_scroll_pagination.py chore(api/libs): Apply ruff format. (#7301) 1 year ago
json_in_md_parser.py feat: mypy for all type check (#10921) 1 year ago
login.py refactor: Consolidate Flask-Login Authentication Logic (#20235) 8 months ago
oauth.py feat: mypy for all type check (#10921) 1 year ago
oauth_data_source.py Fix/replace datetime patterns with naive utc now (#22654) 7 months ago
passport.py test: add comprehensive unit tests for PassportService with exception handling optimization (#22268) 7 months ago
password.py Feat/new login (#8120) 1 year ago
rsa.py refactor: Fix some type error (#22594) 7 months ago
sendgrid.py bug: fix minor exception msg missing (#21255) 8 months ago
uuid_utils.py feat(api): add UUIDv7 implementation in SQL and Python (#22058) 7 months ago