public static boolean canBeConvertedToSmtpAnswer(HookReturnCode returnCode) { return HookReturnCode.Action.ACTIVE_ACTIONS .contains(returnCode.getAction()) || returnCode.isDisconnected(); }
private static Optional<String> retrieveDefaultSmtpReturnCode(HookReturnCode returnCode) { switch (returnCode.getAction()) { case DENY: return Optional.of(SMTPRetCode.TRANSACTION_FAILED); case DENYSOFT: return Optional.of(SMTPRetCode.LOCAL_ERROR); case OK: return Optional.of(SMTPRetCode.MAIL_OK); case DECLINED: case NONE: break; } if (returnCode.isDisconnected()) { return Optional.of(SMTPRetCode.TRANSACTION_FAILED); } return Optional.empty(); }
private static Optional<String> retrieveDefaultSmtpDescription(HookReturnCode returnCode) { switch (returnCode.getAction()) { case DENY: return Optional.of("Email rejected"); case DENYSOFT: return Optional.of("Temporary problem. Please try again later"); case OK: return Optional.of("Command accepted"); case DECLINED: case NONE: break; } if (returnCode.isDisconnected()) { return Optional.of("Server disconnected"); } return Optional.empty(); }
@Override public HookResult onHookResult(SMTPSession session, HookResult hResult, long executionTime, Hook hook) { HookReturnCode result = hResult.getResult(); boolean requiresInfoLogging = result.getAction() == HookReturnCode.Action.DENY || result.getAction() == HookReturnCode.Action.DENYSOFT || result.isDisconnected(); if (requiresInfoLogging) { LOGGER.info("{}: result= ({} {})", hook.getClass().getName(), result.getAction(), result.getConnectionStatus()); } else { LOGGER.debug("{}: result= ({} {})", hook.getClass().getName(), result.getAction(), result.getConnectionStatus()); } return hResult; }
if (hRes.getResult().isDisconnected()) { return new Response() {
SMTPResponse response = new SMTPResponse(smtpReturnCode, smtpDescription); if (returnCode.isDisconnected()) { response.setEndSession(true); } else if (returnCode.isDisconnected()) { SMTPResponse response = new SMTPResponse(""); response.setEndSession(true);
/** * Convert the HookResult to SMTPResponse using default values. Should be override for using own values * * @param result HookResult * @return SMTPResponse */ public static SMTPResponse calcDefaultSMTPResponse(HookResult result) { if (result != null) { HookReturnCode returnCode = result.getResult(); String smtpReturnCode = OptionalUtils.or( Optional.ofNullable(result.getSmtpRetCode()), retrieveDefaultSmtpReturnCode(returnCode)) .orElse(null); String smtpDescription = OptionalUtils.or( Optional.ofNullable(result.getSmtpDescription()), retrieveDefaultSmtpDescription(returnCode)) .orElse(null); if (canBeConvertedToSmtpAnswer(returnCode)) { SMTPResponse response = new SMTPResponse(smtpReturnCode, smtpDescription); if (returnCode.isDisconnected()) { response.setEndSession(true); } return response; } } return null; }