Hi Jenkins community! ![]()
I’m Harshavardhan(@harshavardhanreddy06), a Java developer applying
for GSoC 2026 with Jenkins.
Project I’m Working On
I’m focused on “Jenkins Email Notifications using Outlook SMTP with OAuth”
and specifically JENKINS-73486 —
OAuth 2.0 not working with Office 365.
The problem: The plugin passes client_secret directly as the XOAUTH2 password,
but Microsoft requires fetching a short-lived access token via the client_credentials
flow from https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token.
Without this, every O365 auth attempt fails with 535 5.7.3 Authentication unsuccessful.
My plan: Add an O365 token provider inside MailAccount.java that:
- Fetches a token using
clientId,clientSecret, andtenantId - Auto-refreshes it before it expires (tokens live only 1 hour)
- Requires no manual config from the user
Contribution So Far
I’ve already opened a PR to get familiar with the codebase:
PR #1453 — Replace printStackTrace with LOGGER in script execution and template rendering
Replaces raw printStackTrace calls in ExtendedEmailPublisher.java, ScriptContent.java,
AbstractScriptTrigger.java, and SimpleTemplateEngine.java with proper LOGGER.log()
using Jenkins logging APIs — improving log consistency and making stack traces visible
in the Jenkins log configuration UI.
Questions for Mentors
- Should the O365 token refresh logic live in MailAccount.java, or would a separate
OAuthTokenProviderclass be cleaner? - Are there existing integration test patterns in this plugin I should follow for
testing SMTP auth flows?
Happy to start working on a design doc / draft PR for the O365 OAuth fix. Would love
any early feedback from mentors!
— Harsha | GitHub: @harshavardhanreddy06