From 5e15d9a7b80f3c2766d1d8746619ff67f90aac0c Mon Sep 17 00:00:00 2001 From: migangqui Date: Mon, 30 Jan 2023 18:55:40 +0100 Subject: [PATCH] [release/1.2.0] update dependencies. Add EmailAttachment object. Update spring auto configuration declaration. --- README.md | 12 ++++++-- spring-email-java-example/pom.xml | 12 ++------ .../SpringEmailJavaExampleApplication.java | 9 +++--- spring-email-java/README.md | 2 +- spring-email-java/pom.xml | 13 ++------ .../email/config/EmailSenderConfig.java | 3 -- .../migangqui/spring/email/model/Email.java | 9 +++--- .../spring/email/service/EmailSenderImpl.java | 23 ++++++++------ .../main/resources/META-INF/spring.factories | 1 - ...ot.autoconfigure.AutoConfiguration.imports | 1 + spring-email-kotlin/pom.xml | 30 ++++++------------- .../migangqui/spring/email/model/Email.kt | 5 +--- .../spring/email/model/EmailAttachment.kt | 8 +++++ .../spring/email/service/EmailSenderImpl.kt | 14 ++++----- ...ot.autoconfigure.AutoConfiguration.imports | 1 + 15 files changed, 66 insertions(+), 77 deletions(-) delete mode 100644 spring-email-java/src/main/resources/META-INF/spring.factories create mode 100644 spring-email-java/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 spring-email-kotlin/src/main/kotlin/com/github/migangqui/spring/email/model/EmailAttachment.kt create mode 100644 spring-email-kotlin/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports diff --git a/README.md b/README.md index eb15a4f..13a9768 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ Spring Email API (Java/Kotlin) ![Maven Central](https://img.shields.io/maven-central/v/com.github.migangqui/spring-email-api-java?style=for-the-badge) -It is an API for Java and Kotlin to send emails with Spring. To add to the project, only do these things. +It is an API for Java and Kotlin to send emails with Spring. To add to your project... -### Add dependency to pom.xml +### Add dependency to Maven or Gradle: For Java: @@ -18,6 +18,9 @@ For Java: ${currentVersion} ``` +```groovy +implementation 'com.github.migangqui:spring-email-api-java:${currentVersion}' +``` For Kotlin: @@ -28,8 +31,11 @@ For Kotlin: ${currentVersion} ``` +```groovy +implementation 'com.github.migangqui:spring-email-api-kotlin:${currentVersion}' +``` -```${currentVersion}``` is ```1.1.0``` +```${currentVersion}``` is ```1.2.0``` ### Add the following properties in application.yml of the project diff --git a/spring-email-java-example/pom.xml b/spring-email-java-example/pom.xml index 8913d80..bdad423 100644 --- a/spring-email-java-example/pom.xml +++ b/spring-email-java-example/pom.xml @@ -14,14 +14,14 @@ org.springframework.boot spring-boot-starter-parent - 2.0.5.RELEASE + 2.7.8 UTF-8 UTF-8 - 1.8 + 17 @@ -33,13 +33,7 @@ com.github.migangqui spring-email-api-java - 1.0.1 - - - - org.springframework.boot - spring-boot-starter-test - test + 1.2.0 diff --git a/spring-email-java-example/src/main/java/com/github/migangqui/spring/email/java/example/SpringEmailJavaExampleApplication.java b/spring-email-java-example/src/main/java/com/github/migangqui/spring/email/java/example/SpringEmailJavaExampleApplication.java index efdc4a1..5cb5d86 100644 --- a/spring-email-java-example/src/main/java/com/github/migangqui/spring/email/java/example/SpringEmailJavaExampleApplication.java +++ b/spring-email-java-example/src/main/java/com/github/migangqui/spring/email/java/example/SpringEmailJavaExampleApplication.java @@ -2,11 +2,10 @@ import com.github.migangqui.spring.email.model.Email; import com.github.migangqui.spring.email.model.SendEmailResult; -import com.github.migangqui.spring.email.service.EmailService; +import com.github.migangqui.spring.email.service.EmailSender; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.ComponentScan; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -26,15 +25,15 @@ public static void main(String[] args) { } @Autowired - private EmailService emailService; + private EmailSender emailSender; @PostMapping public SendEmailResult sendEmail(@RequestBody Email email) { - return emailService.send(email); + return emailSender.send(email); } @PostMapping("/async") public SendEmailResult sendEmailAsync(@RequestBody Email email) throws ExecutionException, InterruptedException { - return emailService.sendAsync(email).get(); + return emailSender.sendAsync(email).get(); } } diff --git a/spring-email-java/README.md b/spring-email-java/README.md index 2cd6c26..3a0d1b6 100644 --- a/spring-email-java/README.md +++ b/spring-email-java/README.md @@ -10,4 +10,4 @@ It is an Java API to send email with Spring. ``` -```${currentVersion}``` is ```1.1.0``` \ No newline at end of file +```${currentVersion}``` is ```1.2.0``` \ No newline at end of file diff --git a/spring-email-java/pom.xml b/spring-email-java/pom.xml index e84743d..575d0ba 100644 --- a/spring-email-java/pom.xml +++ b/spring-email-java/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.github.migangqui spring-email-api-java - 1.1.0 + 1.2.0 spring-email-api-java Java API to send emails in Spring @@ -32,9 +32,8 @@ 17 17 - 1.18.22 2.11.0 - 2.6.6 + 2.7.8 @@ -48,12 +47,6 @@ commons-io ${commons-io.version} - - org.projectlombok - lombok - ${lombok.version} - provided - @@ -97,7 +90,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.3.2 + 3.4.1 attach-javadocs diff --git a/spring-email-java/src/main/java/com/github/migangqui/spring/email/config/EmailSenderConfig.java b/spring-email-java/src/main/java/com/github/migangqui/spring/email/config/EmailSenderConfig.java index 2b68762..ab53df7 100644 --- a/spring-email-java/src/main/java/com/github/migangqui/spring/email/config/EmailSenderConfig.java +++ b/spring-email-java/src/main/java/com/github/migangqui/spring/email/config/EmailSenderConfig.java @@ -2,18 +2,15 @@ import com.github.migangqui.spring.email.service.EmailSender; import com.github.migangqui.spring.email.service.EmailSenderImpl; -import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.mail.javamail.JavaMailSender; -@Slf4j @Configuration public class EmailSenderConfig { @Bean public EmailSender emailSender(final JavaMailSender javaMailSender) { - log.debug("Registering EmailSender bean"); return new EmailSenderImpl(javaMailSender); } } diff --git a/spring-email-java/src/main/java/com/github/migangqui/spring/email/model/Email.java b/spring-email-java/src/main/java/com/github/migangqui/spring/email/model/Email.java index 2b9bfba..273af1e 100644 --- a/spring-email-java/src/main/java/com/github/migangqui/spring/email/model/Email.java +++ b/spring-email-java/src/main/java/com/github/migangqui/spring/email/model/Email.java @@ -3,15 +3,16 @@ import java.io.InputStream; import java.util.Optional; -public record Email(String from, String to, String subject, String body, - Optional file, Optional filename) { +public record Email(String from, String to, String subject, String body, Optional attachment) { public Email(String from, String to, String subject, String body) { - this(from, to, subject, body, Optional.empty(), Optional.empty()); + this(from, to, subject, body, Optional.empty()); } public Email(String from, String to, String subject, String body, InputStream file, String filename) { - this(from, to, subject, body, Optional.ofNullable(file), Optional.ofNullable(filename)); + this(from, to, subject, body, Optional.of(new EmailAttachment(file, filename))); } + public record EmailAttachment(InputStream file, String filename) {} + } \ No newline at end of file diff --git a/spring-email-java/src/main/java/com/github/migangqui/spring/email/service/EmailSenderImpl.java b/spring-email-java/src/main/java/com/github/migangqui/spring/email/service/EmailSenderImpl.java index 0094a52..f94dab9 100644 --- a/spring-email-java/src/main/java/com/github/migangqui/spring/email/service/EmailSenderImpl.java +++ b/spring-email-java/src/main/java/com/github/migangqui/spring/email/service/EmailSenderImpl.java @@ -1,9 +1,9 @@ package com.github.migangqui.spring.email.service; -import com.github.migangqui.spring.email.model.SendEmailResult; import com.github.migangqui.spring.email.model.Email; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; +import com.github.migangqui.spring.email.model.SendEmailResult; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.core.io.InputStreamResource; import org.springframework.mail.MailException; import org.springframework.mail.javamail.JavaMailSender; @@ -16,15 +16,19 @@ import javax.mail.internet.MimeMessage; import java.util.concurrent.Future; -@Slf4j -@RequiredArgsConstructor public class EmailSenderImpl implements EmailSender { + private static final Logger log = LoggerFactory.getLogger(EmailSenderImpl.class); + private final JavaMailSender javaMailSender; + public EmailSenderImpl(JavaMailSender javaMailSender) { + this.javaMailSender = javaMailSender; + } + @Override public SendEmailResult send(final Email email) { - log.debug("Sending email"); + log.info("Sending email"); try { javaMailSender.send(generateMailMessage(email)); log.debug("Email sent successfully"); @@ -45,15 +49,16 @@ public Future sendAsync(final Email email) { private MimeMessage generateMailMessage(final Email email) throws MessagingException { final MimeMessageHelper helper = new MimeMessageHelper( - javaMailSender.createMimeMessage(), email.file().isPresent()); + javaMailSender.createMimeMessage(), email.attachment().isPresent()); helper.setFrom(new InternetAddress(email.from())); helper.setTo(email.to()); helper.setSubject(email.subject()); helper.setText(email.body(), true); - if (email.file().isPresent()) { - helper.addAttachment(email.filename().get(), new InputStreamResource(email.file().get())); + if (email.attachment().isPresent()) { + helper.addAttachment(email.attachment().get().filename(), + new InputStreamResource(email.attachment().get().file())); } return helper.getMimeMessage(); diff --git a/spring-email-java/src/main/resources/META-INF/spring.factories b/spring-email-java/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 4ab2a65..0000000 --- a/spring-email-java/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.github.migangqui.spring.email.config.EmailSenderConfig \ No newline at end of file diff --git a/spring-email-java/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-email-java/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..0e2fed3 --- /dev/null +++ b/spring-email-java/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.github.migangqui.spring.email.config.EmailSenderConfig \ No newline at end of file diff --git a/spring-email-kotlin/pom.xml b/spring-email-kotlin/pom.xml index 2da2e04..f0aad72 100644 --- a/spring-email-kotlin/pom.xml +++ b/spring-email-kotlin/pom.xml @@ -5,7 +5,7 @@ com.github.migangqui spring-email-api-kotlin - 1.1.0 + 1.2.0 spring-email-api-kotlin Kotlin API to send emails in Spring @@ -34,8 +34,8 @@ UTF-8 UTF-8 - 1.6.20 - 2.6.6 + 1.8.0 + 2.7.8 2.11.0 @@ -60,30 +60,18 @@ kotlin-reflect ${kotlin.version} - - io.github.microutils - kotlin-logging - 1.6.10 - - - org.jetbrains.kotlin - kotlin-test - ${kotlin.version} - test - src/main/kotlin - src/test/kotlin org.apache.maven.plugins maven-compiler-plugin - 3.2 + 3.10.1 - 1.8 - 1.8 + 17 + 17 @@ -113,7 +101,7 @@ spring - 1.8 + 17 @@ -153,7 +141,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.3.2 + 3.4.1 attach-javadocs @@ -180,7 +168,7 @@ org.jetbrains.dokka dokka-maven-plugin - 1.6.10 + 1.7.20 prepare-package diff --git a/spring-email-kotlin/src/main/kotlin/com/github/migangqui/spring/email/model/Email.kt b/spring-email-kotlin/src/main/kotlin/com/github/migangqui/spring/email/model/Email.kt index 6a3be9f..b562753 100644 --- a/spring-email-kotlin/src/main/kotlin/com/github/migangqui/spring/email/model/Email.kt +++ b/spring-email-kotlin/src/main/kotlin/com/github/migangqui/spring/email/model/Email.kt @@ -1,12 +1,9 @@ package com.github.migangqui.spring.email.model -import java.io.InputStream - data class Email( val from: String, val to: String, val subject: String? = null, val body: String, - val file: InputStream? = null, - val filename: String? = null + val attachment: EmailAttachment? ) \ No newline at end of file diff --git a/spring-email-kotlin/src/main/kotlin/com/github/migangqui/spring/email/model/EmailAttachment.kt b/spring-email-kotlin/src/main/kotlin/com/github/migangqui/spring/email/model/EmailAttachment.kt new file mode 100644 index 0000000..7f963c9 --- /dev/null +++ b/spring-email-kotlin/src/main/kotlin/com/github/migangqui/spring/email/model/EmailAttachment.kt @@ -0,0 +1,8 @@ +package com.github.migangqui.spring.email.model + +import java.io.InputStream + +data class EmailAttachment( + val file: InputStream, + val filename: String +) \ No newline at end of file diff --git a/spring-email-kotlin/src/main/kotlin/com/github/migangqui/spring/email/service/EmailSenderImpl.kt b/spring-email-kotlin/src/main/kotlin/com/github/migangqui/spring/email/service/EmailSenderImpl.kt index 545ddfe..08e4293 100644 --- a/spring-email-kotlin/src/main/kotlin/com/github/migangqui/spring/email/service/EmailSenderImpl.kt +++ b/spring-email-kotlin/src/main/kotlin/com/github/migangqui/spring/email/service/EmailSenderImpl.kt @@ -2,7 +2,7 @@ package com.github.migangqui.spring.email.service import com.github.migangqui.spring.email.model.Email import com.github.migangqui.spring.email.model.SendEmailResult -import mu.KotlinLogging +import org.slf4j.LoggerFactory import org.springframework.core.io.InputStreamResource import org.springframework.mail.MailException import org.springframework.mail.javamail.JavaMailSender @@ -16,13 +16,13 @@ import javax.mail.internet.MimeMessage internal class EmailSenderImpl(private val javaMailSender: JavaMailSender) : EmailSender { - private val log = KotlinLogging.logger {} + private val log = LoggerFactory.getLogger(this.javaClass) override fun send(email: Email): SendEmailResult { - log.debug { "Sending email" } + log.info("Sending email") return try { javaMailSender.send(generateMailMessage(email)) - log.debug { "Email sent successfully" } + log.debug("Email sent successfully") SendEmailResult(status = 200) } catch (exception: MessagingException) { log.warn("An error has occurred sending email", exception) @@ -42,15 +42,15 @@ internal class EmailSenderImpl(private val javaMailSender: JavaMailSender) : Ema @Throws(MessagingException::class) private fun generateMailMessage(email: Email): MimeMessage { - val helper = MimeMessageHelper(javaMailSender.createMimeMessage(), email.file != null) + val helper = MimeMessageHelper(javaMailSender.createMimeMessage(), email.attachment != null) helper.setFrom(InternetAddress(email.from)) helper.setTo(email.to) helper.setSubject(email.subject!!) helper.setText(email.body, true) - if (email.file != null && email.filename != null) { - helper.addAttachment(email.filename, InputStreamResource(email.file)) + if (email.attachment != null) { + helper.addAttachment(email.attachment.filename, InputStreamResource(email.attachment.file)) } return helper.mimeMessage } diff --git a/spring-email-kotlin/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-email-kotlin/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..0e2fed3 --- /dev/null +++ b/spring-email-kotlin/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.github.migangqui.spring.email.config.EmailSenderConfig \ No newline at end of file