{"record":{"id":"d16a3f4337f63ad9","repo":"theonedev/onedev","slug":"primary-email-address-not-set-or-not-verified-for","errorCode":null,"errorMessage":"Primary email address not set or not verified for user: ${name}","messagePattern":"Primary email address not set or not verified for user: (.+?)","errorType":"exception","errorClass":"NotAcceptableException","httpStatus":400,"severity":"error","filePath":"server-core/src/main/java/io/onedev/server/model/User.java","lineNumber":1278,"sourceCode":"\tpublic EmailAddress getPrimaryEmailAddress() {\t\t\n\t\tif (primaryEmailAddress == null)\n\t\t\tprimaryEmailAddress = Optional.ofNullable(getEmailAddressService().findPrimary(this));\n\t\treturn primaryEmailAddress.orElse(null);\n\t}\n\n\tpublic void cachePrimaryEmailAddress(EmailAddress primaryEmailAddress) {\n\t\tthis.primaryEmailAddress = Optional.ofNullable(primaryEmailAddress);\n\t}\n\n\tpublic EmailAddress getGitEmailAddress() {\n\t\tif (isKeepEmailAddressesPrivate() || getType() == Type.SERVICE || getType() == Type.AI) {\n\t\t\treturn newNoreplyEmailAddress();\n\t\t} else {\n\t\t\tvar primaryEmailAddress = getPrimaryEmailAddress();\n\t\t\tif (primaryEmailAddress != null && primaryEmailAddress.isVerified())\n\t\t\t\treturn primaryEmailAddress;\n\t\t\telse\n\t\t\t\tthrow new NotAcceptableException(\"Primary email address not set or not verified for user: \" + getName());\n\t\t}\n\t}\n\n\tpublic EmailAddress newNoreplyEmailAddress() {\n\t\tvar emailAddress = new EmailAddress();\n\t\temailAddress.setValue(getName() + \"@\" + getNoreplyEmailDomain());\n\t\temailAddress.setOwner(this);\n\t\temailAddress.setVerificationCode(null);\n\t\treturn emailAddress;\n\t}\n\n\tpublic static String getNoreplyEmailDomain() {\n\t\treturn OneDev.getInstance(SettingService.class).getSystemSetting().getNoreplyEmailDomain();\n\t}\n\n\tpublic static String getSystemNoreplyEmailAddress() {\n\t\treturn User.SYSTEM_NAME.toLowerCase() + \"@\" + getNoreplyEmailDomain();\n\t}","sourceCodeStart":1260,"sourceCodeEnd":1296,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/model/User.java#L1260-L1296","documentation":"This NotAcceptableException is thrown when code requires a user's verified primary email address (e.g. for git email, notifications, or noreply address generation) but the user has either no primary email set or the primary email is unverified. OneDev refuses to expose/use an unverified address.","triggerScenarios":"Calling the method that resolves the user's git/email address (around User.java:1278) when getPrimaryEmailAddress() is null or isVerified() is false — e.g. during push, commit attribution, or operations requiring a real email identity.","commonSituations":"Users created via API/script without email; email added but verification link never clicked; import/migration losing email verification state; SSO accounts lacking a verified email in OneDev.","solutions":["Log in as the user and set a primary email under Profile → Emails, then click the verification link","If self-registration is restricted, have an administrator verify or set the email via the user management page (or enable auto-verification for trusted SSO)","For service/machine users, configure a noreply email so the verified-address path is not needed","Re-trigger the verification email if the original link expired"],"exampleFix":"// before (assuming user has verified email)\nString email = user.getGitEmailAddress().getValue();\n// after\nvar primary = user.getPrimaryEmailAddress();\nif (primary == null || !primary.isVerified()) {\n    throw new NotAcceptableException(\"User must set and verify a primary email first\");\n}\nString email = primary.getValue();","handlingStrategy":"validation","validationCode":"var primary = user.getPrimaryEmailAddress();\nboolean ok = primary != null && primary.isVerified();","typeGuard":"boolean hasVerifiedPrimaryEmail(User u) {\n    var e = u.getPrimaryEmailAddress();\n    return e != null && e.isVerified();\n}","tryCatchPattern":"try {\n    String email = user.getGitEmailAddress().getValue();\n} catch (NotAcceptableException e) {\n    logger.warn(\"User {} lacks verified primary email\", user.getName());\n}","preventionTips":["Require email at account creation","Prompt users to verify email after signup/SSO linking","Check verification status in admin user audits"],"tags":["email","user","verification"],"backgroundTag":"missing-required-config-field","analyzedSha":"d44925c47c37992c828ea673a5f9620539bc3ff2","analyzedAt":"2026-09-06T07:18:27.995Z","contentChangedAt":"2026-09-06T07:18:27.995Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}