From 5f07f6f5697e6a83512c0ce40b998fd756da3cb9 Mon Sep 17 00:00:00 2001 From: Thomas Neidhart Date: Thu, 26 Feb 2026 14:39:51 +0100 Subject: [PATCH] make sending emails more fail-safe: fullName and / or email might be null --- .../java/org/eclipse/openvsx/mail/MailService.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/org/eclipse/openvsx/mail/MailService.java b/server/src/main/java/org/eclipse/openvsx/mail/MailService.java index a669d321b..223918e65 100644 --- a/server/src/main/java/org/eclipse/openvsx/mail/MailService.java +++ b/server/src/main/java/org/eclipse/openvsx/mail/MailService.java @@ -11,6 +11,8 @@ import org.eclipse.openvsx.entities.UserData; import org.jobrunr.scheduling.JobRequestScheduler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.mail.javamail.JavaMailSender; @@ -20,6 +22,7 @@ @Component public class MailService { + private final Logger logger = LoggerFactory.getLogger(MailService.class); private final boolean disabled; private final JobRequestScheduler scheduler; @@ -36,11 +39,18 @@ public MailService(@Autowired(required = false) JavaMailSender sender, JobReques } public void scheduleRevokedAccessTokensMail(UserData user) { - if(disabled) { + if (disabled) { return; } - var variables = Map.of("name", user.getFullName()); + if (user.getEmail() == null) { + logger.info("Could not schedule mail to user '{}' due to revoked access tokens: email not known", user.getLoginName()); + return; + } + + // the fullName might be null + var name = user.getFullName() == null ? user.getLoginName() : user.getFullName(); + var variables = Map.of("name", name); var jobRequest = new SendMailJobRequest( user.getEmail(), revokedAccessTokensSubject,