This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to branch feature/SLING-8337 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-committer-cli.git
commit d9ae57105690c4ddaf25301bbd07d816f6a0defa Author: Radu Cotescu <[email protected]> AuthorDate: Fri Mar 29 15:23:50 2019 +0100 SLING-8311 - Investigate creating a Sling CLI tool for development task automation * finished Mailer implementation --- Dockerfile | 2 +- src/main/features/app.json | 5 +++- .../org/apache/sling/cli/impl/mail/Mailer.java | 30 ++++++++++++---------- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/Dockerfile b/Dockerfile index ca438e9..48d4d4e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,7 +11,7 @@ # ---------------------------------------------------------------------------------------- FROM azul/zulu-openjdk-alpine:11 as builder MAINTAINER [email protected] -RUN jlink --add-modules java.logging,java.naming,java.xml,java.security.jgss,java.sql,jdk.crypto.ec \ +RUN jlink --add-modules java.logging,java.naming,java.xml,java.security.jgss,java.sql,jdk.crypto.ec,java.desktop \ --output /opt/jre --strip-debug --compress=2 --no-header-files --no-man-pages FROM alpine diff --git a/src/main/features/app.json b/src/main/features/app.json index 5daa106..d8a2bb2 100644 --- a/src/main/features/app.json +++ b/src/main/features/app.json @@ -66,7 +66,10 @@ "start-level": "3" }, { - "id":"javax.mail:mail:1.5.0-b01" + "id": "javax.mail:mail:1.5.0-b01" + }, + { + "id": "org.apache.sling:org.apache.sling.javax.activation:0.1.0" } ] } diff --git a/src/main/java/org/apache/sling/cli/impl/mail/Mailer.java b/src/main/java/org/apache/sling/cli/impl/mail/Mailer.java index e4bd604..0c0a4e4 100644 --- a/src/main/java/org/apache/sling/cli/impl/mail/Mailer.java +++ b/src/main/java/org/apache/sling/cli/impl/mail/Mailer.java @@ -18,32 +18,38 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ package org.apache.sling.cli.impl.mail; +import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.util.Properties; -import javax.mail.Authenticator; +import javax.mail.Address; import javax.mail.Message; import javax.mail.MessagingException; -import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; +import org.apache.sling.cli.impl.Credentials; import org.apache.sling.cli.impl.CredentialsService; +import org.apache.sling.cli.impl.people.Member; import org.apache.sling.cli.impl.people.MembersFinder; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; @Component( service = Mailer.class ) public class Mailer { + private static final Logger LOGGER = LoggerFactory.getLogger(Mailer.class); + private static final Properties SMTP_PROPERTIES = new Properties() {{ put("mail.smtp.host", "mail-relay.apache.org"); + put("mail.smtp.port", "465"); put("mail.smtp.auth", "true"); - put("mail.smtp.socketFactory.port", 465); put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); put("mail.smtp.socketFactory.fallback", "false"); }}; @@ -56,22 +62,18 @@ public class Mailer { public void send(String to, String subject, String body) { Properties properties = new Properties(SMTP_PROPERTIES); - Session session = Session.getDefaultInstance(properties, new Authenticator() { - @Override - protected PasswordAuthentication getPasswordAuthentication() { - return new PasswordAuthentication(credentialsService.getCredentials().getUsername(), - credentialsService.getCredentials().getPassword()); - } - }); + Session session = Session.getInstance(properties); try { MimeMessage message = new MimeMessage(session); - message.setFrom(membersFinder.getCurrentMember().getEmail()); + Member sender = membersFinder.getCurrentMember(); + Credentials credentials = credentialsService.getCredentials(); + message.setFrom(new InternetAddress(sender.getEmail(), sender.getEmail(), StandardCharsets.UTF_8.name())); message.setSubject(subject); message.setText(body, StandardCharsets.UTF_8.name()); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); - Transport.send(message); - } catch (MessagingException e) { - + Transport.send(message, new Address[] {new InternetAddress(to)}, credentials.getUsername(), credentials.getPassword()); + } catch (MessagingException | UnsupportedEncodingException e) { + LOGGER.error(String.format("Unable to send email with Subject '%s' to '%s'.", subject, to), e); } }
