Skip to content

Commit a6ccece

Browse files
authored
Merge pull request #342 from mikesname/feature/commons-email2
Switch over dependencies to commons-email2 / Jakarta (WIP)
2 parents 371841a + 4b01a8c commit a6ccece

File tree

11 files changed

+27
-32
lines changed

11 files changed

+27
-32
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ Use the `@Inject` annotation on the constructor, service of your component or co
8282
```scala
8383
import play.api.libs.mailer._
8484
import java.io.File
85-
import org.apache.commons.mail.EmailAttachment
85+
import org.apache.commons.mail2.jakarta.EmailAttachment
8686
import javax.inject.Inject
8787

8888
class MailerService @Inject() (mailerClient: MailerClient) {

build.sbt

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ lazy val commonSettings = Seq(
3535
),
3636
)
3737

38-
val previousVersion: Option[String] = Some("10.0.0")
38+
val previousVersion: Option[String] = None
3939

4040
lazy val `play-mailer` = (project in file("play-mailer"))
4141
.enablePlugins(Common)
@@ -45,7 +45,7 @@ lazy val `play-mailer` = (project in file("play-mailer"))
4545
"javax.inject" % "javax.inject" % "1",
4646
"com.typesafe" % "config" % "1.4.3",
4747
"org.slf4j" % "slf4j-api" % "2.0.16",
48-
"org.apache.commons" % "commons-email" % "1.5",
48+
"org.apache.commons" % "commons-email2-jakarta" % "2.0.0-M1",
4949
"org.playframework" %% "play" % Dependencies.PlayVersion % Test,
5050
"org.playframework" %% "play-specs2" % Dependencies.PlayVersion % Test
5151
),

play-mailer/src/main/java/play/libs/mailer/Attachment.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package play.libs.mailer;
22

3-
import javax.activation.DataSource;
3+
import jakarta.activation.DataSource;
44
import java.io.File;
55
import java.net.URL;
66

play-mailer/src/main/java/play/libs/mailer/Email.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package play.libs.mailer;
22

3-
import javax.activation.DataSource;
3+
import jakarta.activation.DataSource;
44
import java.io.File;
55
import java.net.URL;
66
import java.util.ArrayList;

play-mailer/src/main/scala/play/api/libs/mailer/Attachment.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package play.api.libs.mailer
22

3+
import jakarta.activation.DataSource
34
import java.io.File
45
import java.net.URL
5-
import javax.activation.DataSource
66

77
sealed trait Attachment
88

play-mailer/src/main/scala/play/api/libs/mailer/CommonsMailer.scala

+9-13
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
package play.api.libs.mailer
22

3-
import java.io.FilterOutputStream
4-
import java.io.PrintStream
5-
6-
import javax.mail.internet.InternetAddress
7-
import javax.mail.Session
8-
import org.apache.commons.mail.DefaultAuthenticator
9-
import org.apache.commons.mail.EmailAttachment
10-
import org.apache.commons.mail.HtmlEmail
11-
import org.apache.commons.mail.MultiPartEmail
3+
import jakarta.activation.URLDataSource
4+
import jakarta.mail.Session
5+
import jakarta.mail.internet.InternetAddress
6+
import org.apache.commons.mail2.jakarta.{ DefaultAuthenticator, EmailAttachment, HtmlEmail, MultiPartEmail }
127
import org.slf4j.LoggerFactory
138

14-
import javax.activation.URLDataSource
9+
import java.io.{ FilterOutputStream, PrintStream }
10+
import java.time
1511
import scala.collection.JavaConverters._
1612
import scala.util.control.NonFatal
1713

@@ -39,8 +35,8 @@ abstract class CommonsMailer(conf: SMTPConfiguration) extends MailerClient {
3935
data.headers.foreach {
4036
header => email.addHeader(header._1, header._2)
4137
}
42-
conf.timeout.foreach(email.setSocketTimeout)
43-
conf.connectionTimeout.foreach(email.setSocketConnectionTimeout)
38+
conf.timeout.foreach(timeout => email.setSocketTimeout(java.time.Duration.ofMillis(timeout)))
39+
conf.connectionTimeout.foreach(timeout => email.setSocketConnectionTimeout(time.Duration.ofMillis(timeout)))
4440
data.attachments.foreach {
4541
case attachmentData: AttachmentData =>
4642
handleAttachmentData(email, attachmentData)
@@ -131,7 +127,7 @@ abstract class CommonsMailer(conf: SMTPConfiguration) extends MailerClient {
131127
private def handleAttachmentData(email: MultiPartEmail, attachmentData: AttachmentData): Unit = {
132128
val description = attachmentData.description.getOrElse(attachmentData.name)
133129
val disposition = attachmentData.disposition.getOrElse(EmailAttachment.ATTACHMENT)
134-
val dataSource = new javax.mail.util.ByteArrayDataSource(attachmentData.data, attachmentData.mimetype)
130+
val dataSource = new jakarta.mail.util.ByteArrayDataSource(attachmentData.data, attachmentData.mimetype)
135131
attachmentData.contentId match {
136132
case Some(cid) =>
137133
email match {

play-mailer/src/main/scala/play/api/libs/mailer/SMTPMailer.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package play.api.libs.mailer
22

3-
import javax.inject.Inject
3+
import org.apache.commons.mail2.jakarta.{ HtmlEmail, MultiPartEmail }
44

5-
import org.apache.commons.mail.{ HtmlEmail, MultiPartEmail }
5+
import javax.inject.Inject
66

77
class SMTPMailer @Inject() (smtpConfiguration: SMTPConfiguration) extends MailerClient {
88

play-mailer/src/test/scala/play/api/libs/mailer/MailerPluginSpec.scala

+7-8
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package play.api.libs.mailer
22

3-
import java.io.File
4-
import javax.mail.Part
5-
63
import com.typesafe.config.{ Config, ConfigFactory }
7-
import org.apache.commons.mail.{ EmailConstants, HtmlEmail, MultiPartEmail }
4+
import jakarta.mail.Part
5+
import org.apache.commons.mail2.core.EmailConstants
6+
import org.apache.commons.mail2.jakarta.{ HtmlEmail, MultiPartEmail }
87
import org.specs2.mutable._
98

9+
import java.io.File
10+
1011
class MailerPluginSpec extends Specification {
1112

1213
object SimpleMailerClient extends MailerClient {
@@ -18,8 +19,6 @@ class MailerPluginSpec extends Specification {
1819
override def getContainer = super.getContainer
1920
}
2021
class MockHtmlEmail extends HtmlEmail {
21-
def getHtml = this.html
22-
def getText = this.text
2322
override def getPrimaryBodyPart = super.getPrimaryBodyPart
2423
override def getContainer = super.getContainer
2524
}
@@ -67,8 +66,8 @@ class MailerPluginSpec extends Specification {
6766
subject = "Subject",
6867
from = "John Doe <[email protected]>"
6968
))
70-
email.getSocketTimeout mustEqual EmailConstants.SOCKET_TIMEOUT_MS
71-
email.getSocketConnectionTimeout mustEqual EmailConstants.SOCKET_TIMEOUT_MS
69+
email.getSocketTimeout mustEqual EmailConstants.SOCKET_TIMEOUT.toMillis.toInt
70+
email.getSocketConnectionTimeout mustEqual EmailConstants.SOCKET_TIMEOUT.toMillis.toInt
7271
}
7372

7473
"configure the SMTP local host if configured" in {

samples/compile-timeDI/app/controllers/ApplicationScala.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package controllers
33
import java.io.File
44

55
import play.api.Environment
6-
import org.apache.commons.mail.EmailAttachment
6+
import org.apache.commons.mail2.jakarta.EmailAttachment
77
import play.api.libs.mailer._
88
import play.api.mvc._
99

samples/runtimeDI/app/controllers/ApplicationJava.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package controllers;
22

3-
import org.apache.commons.mail.EmailAttachment;
3+
import org.apache.commons.mail2.jakarta.EmailAttachment;
44
import play.api.libs.mailer.MailerClient;
55
import play.libs.mailer.Email;
66
import play.mvc.Controller;

samples/runtimeDI/app/controllers/ApplicationScala.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package controllers
33
import java.io.File
44
import javax.inject.Inject
55

6-
import org.apache.commons.mail.EmailAttachment
6+
import org.apache.commons.mail2.jakarta.EmailAttachment
77
import play.api.Environment
88
import play.api.libs.mailer._
99
import play.api.mvc._

0 commit comments

Comments
 (0)