use of com.synopsys.integration.alert.service.email.SmtpConfig in project hub-alert by blackducksoftware.
the class EmailGlobalTestAction method testConfigModelContent.
public ConfigurationTestResult testConfigModelContent(String testAddress, EmailGlobalConfigModel emailGlobalConfigModel) {
if (StringUtils.isBlank(testAddress)) {
return ConfigurationTestResult.failure("Could not determine what email address to send this content to. testAddress was not provided or was blank. Please provide a valid email address to test the configuration.");
}
try {
InternetAddress emailAddress = new InternetAddress(testAddress);
emailAddress.validate();
} catch (AddressException ex) {
return ConfigurationTestResult.failure(String.format("%s is not a valid email address. %s", testAddress, ex.getMessage()));
}
EmailChannelMessageModel testMessage = EmailChannelMessageModel.simple(TEST_SUBJECT_LINE, TEST_MESSAGE_CONTENT, "", "");
SmtpConfigBuilder smtpConfigBuilder = SmtpConfig.builder();
smtpConfigBuilder.setJavamailProperties(javamailPropertiesFactory.createJavaMailProperties(emailGlobalConfigModel));
emailGlobalConfigModel.getSmtpFrom().ifPresent(smtpConfigBuilder::setSmtpFrom);
emailGlobalConfigModel.getSmtpHost().ifPresent(smtpConfigBuilder::setSmtpHost);
emailGlobalConfigModel.getSmtpPort().ifPresent(smtpConfigBuilder::setSmtpPort);
emailGlobalConfigModel.getSmtpAuth().ifPresent(smtpConfigBuilder::setSmtpAuth);
emailGlobalConfigModel.getSmtpUsername().ifPresent(smtpConfigBuilder::setSmtpUsername);
if (BooleanUtils.toBoolean(emailGlobalConfigModel.getIsSmtpPasswordSet()) && emailGlobalConfigModel.getSmtpPassword().isEmpty()) {
// TODO: This assumes if the password is saved but not provided we only test using the default configuration password.
// If the UI supports multiple configurations in the future we should determine which configuration to get the password from.
configurationAccessor.getConfiguration().flatMap(EmailGlobalConfigModel::getSmtpPassword).ifPresent(emailGlobalConfigModel::setSmtpPassword);
}
emailGlobalConfigModel.getSmtpPassword().ifPresent(smtpConfigBuilder::setSmtpPassword);
SmtpConfig smtpConfig = smtpConfigBuilder.build();
try {
EmailTarget emailTarget = emailChannelMessagingService.createTarget(testMessage, testAddress);
MessageResult messageResult = emailChannelMessagingService.sendMessage(smtpConfig, emailTarget);
return ConfigurationTestResult.success(messageResult.getStatusMessage());
} catch (AlertException ex) {
return ConfigurationTestResult.failure(ex.getMessage());
}
}
use of com.synopsys.integration.alert.service.email.SmtpConfig in project hub-alert by blackducksoftware.
the class EmailGlobalFieldModelTestAction method testConfig.
@Override
public MessageResult testConfig(String configId, FieldModel fieldModel, FieldUtility registeredFieldValues) throws AlertException {
String addressString = fieldModel.getFieldValue(FieldModelTestAction.KEY_DESTINATION_NAME).orElse("");
if (StringUtils.isBlank(addressString)) {
throw new AlertException(String.format("Could not determine what email address to send this content to. %s was not provided or was blank. Please provide a valid email address to test the configuration.", FieldModelTestAction.KEY_DESTINATION_NAME));
}
try {
InternetAddress emailAddress = new InternetAddress(addressString);
emailAddress.validate();
} catch (AddressException ex) {
throw new AlertException(String.format("%s is not a valid email address. %s", addressString, ex.getMessage()));
}
EmailChannelMessageModel testMessage = EmailChannelMessageModel.simple(TEST_SUBJECT_LINE, TEST_MESSAGE_CONTENT, "", "");
EmailTarget emailTarget = emailChannelMessagingService.createTarget(testMessage, addressString);
SmtpConfig smtpConfig = SmtpConfig.builder().setJavamailProperties(javamailPropertiesFactory.createJavaMailProperties(registeredFieldValues)).setSmtpFrom(registeredFieldValues.getString(EmailPropertyKeys.JAVAMAIL_FROM_KEY.getPropertyKey()).orElse(null)).setSmtpHost(registeredFieldValues.getString(EmailPropertyKeys.JAVAMAIL_HOST_KEY.getPropertyKey()).orElse(null)).setSmtpPort(registeredFieldValues.getInteger(EmailPropertyKeys.JAVAMAIL_PORT_KEY.getPropertyKey()).orElse(-1)).setSmtpAuth(registeredFieldValues.getBooleanOrFalse(EmailPropertyKeys.JAVAMAIL_AUTH_KEY.getPropertyKey())).setSmtpUsername(registeredFieldValues.getString(EmailPropertyKeys.JAVAMAIL_USER_KEY.name()).orElse(null)).setSmtpPassword(registeredFieldValues.getString(EmailPropertyKeys.JAVAMAIL_PASSWORD_KEY.getPropertyKey()).orElse(null)).build();
return emailChannelMessagingService.sendMessage(smtpConfig, emailTarget);
}
use of com.synopsys.integration.alert.service.email.SmtpConfig in project hub-alert by blackducksoftware.
the class EmailChannelMessageSender method sendMessages.
@Override
public MessageResult sendMessages(EmailJobDetailsModel emailJobDetails, List<EmailChannelMessageModel> emailMessages) throws AlertException {
// Validation
ValidatedEmailAddresses validatedAdditionalEmailAddresses;
UUID jobId = emailJobDetails.getJobId();
if (null != jobId) {
validatedAdditionalEmailAddresses = emailAddressValidator.validate(jobId, emailJobDetails.getAdditionalEmailAddresses());
} else {
validatedAdditionalEmailAddresses = new ValidatedEmailAddresses(new HashSet<>(emailJobDetails.getAdditionalEmailAddresses()), Set.of());
}
Set<String> invalidEmailAddresses = validatedAdditionalEmailAddresses.getInvalidEmailAddresses();
if (!invalidEmailAddresses.isEmpty()) {
emailJobDetails = new EmailJobDetailsModel(emailJobDetails.getJobId(), emailJobDetails.getSubjectLine().orElse(null), emailJobDetails.isProjectOwnerOnly(), emailJobDetails.isAdditionalEmailAddressesOnly(), emailJobDetails.getAttachmentFileType(), new ArrayList<>(validatedAdditionalEmailAddresses.getValidEmailAddresses()));
}
// Distribution
EmailGlobalConfigModel emailServerConfiguration = emailGlobalConfigAccessor.getConfiguration().orElseThrow(() -> new AlertConfigurationException("ERROR: Missing Email global config."));
SmtpConfig smtpConfig = SmtpConfig.builder().setJavamailProperties(javamailPropertiesFactory.createJavaMailProperties(emailServerConfiguration)).setSmtpFrom(emailServerConfiguration.getSmtpFrom().orElse(null)).setSmtpHost(emailServerConfiguration.getSmtpHost().orElse(null)).setSmtpPort(emailServerConfiguration.getSmtpPort().orElse(-1)).setSmtpAuth(emailServerConfiguration.getSmtpAuth().orElse(false)).setSmtpUsername(emailServerConfiguration.getSmtpUsername().orElse(null)).setSmtpPassword(emailServerConfiguration.getSmtpPassword().orElse(null)).build();
int totalEmailsSent = 0;
for (EmailChannelMessageModel message : emailMessages) {
Set<String> projectHrefs = message.getSource().map(ProjectMessage::getProject).flatMap(LinkableItem::getUrl).map(Set::of).orElse(Set.of());
Set<String> gatheredEmailAddresses = emailAddressGatherer.gatherEmailAddresses(emailJobDetails, projectHrefs);
if (gatheredEmailAddresses.isEmpty()) {
if (invalidEmailAddresses.isEmpty()) {
throw new AlertException("Could not determine what email addresses to send this content to");
} else {
String invalidEmailAddressesString = StringUtils.join(invalidEmailAddresses, ", ");
throw new AlertException(String.format("No valid email addresses to send this content to. The following email addresses were invalid: %s", invalidEmailAddressesString));
}
}
EmailTarget emailTarget = emailChannelMessagingService.createTarget(message, gatheredEmailAddresses);
Optional<ProjectMessage> optionalProjectMessage = message.getSource();
if (optionalProjectMessage.isPresent()) {
EmailAttachmentFormat attachmentFormat = EmailAttachmentFormat.getValueSafely(emailJobDetails.getAttachmentFileType());
emailChannelMessagingService.sendMessageWithAttachedProjectMessage(smtpConfig, emailTarget, optionalProjectMessage.get(), attachmentFormat);
} else {
emailChannelMessagingService.sendMessage(smtpConfig, emailTarget);
}
totalEmailsSent += emailTarget.getEmailAddresses().size();
}
// Reporting
if (!invalidEmailAddresses.isEmpty()) {
String invalidEmailAddressesString = StringUtils.join(invalidEmailAddresses, ", ");
String errorMessage = String.format("No emails were sent to the following recipients because they were invalid: %s", invalidEmailAddressesString);
AlertFieldStatus errorStatus = new AlertFieldStatus(EmailDescriptor.KEY_EMAIL_ADDITIONAL_ADDRESSES, FieldStatusSeverity.ERROR, errorMessage);
return new MessageResult(errorMessage, List.of(errorStatus));
}
return new MessageResult(String.format("Successfully sent %d email(s)", totalEmailsSent));
}
Aggregations