From f029048d09fe23c46640dd09799de74b46d552ea Mon Sep 17 00:00:00 2001
From: pppscn <35696959@qq.com>
Date: Fri, 15 Nov 2024 14:27:26 +0800
Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7=EF=BC=9A`android-mail`?=
=?UTF-8?q?=E5=8D=87=E7=BA=A7=E4=B8=BA`jakarta.mail`=20=E6=96=B0=E5=A2=9E?=
=?UTF-8?q?=EF=BC=9A=E6=B7=BB=E5=8A=A0iCloud=E9=82=AE=E7=AE=B1=E6=94=AF?=
=?UTF-8?q?=E6=8C=81=20#541?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/build.gradle | 9 ++++---
.../sms/forwarder/utils/mail/EmailSender.kt | 15 +++++++----
.../sms/forwarder/utils/mail/PgpUtils.kt | 25 +++++++++----------
.../sms/forwarder/utils/mail/SmimeUtils.kt | 25 ++++++++++---------
.../sms/forwarder/utils/sender/EmailUtils.kt | 10 +++++++-
app/src/main/res/values/arrays.xml | 3 ++-
gradle.properties | 4 +--
7 files changed, 53 insertions(+), 38 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index a46eafa5..f22d5ffb 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -346,9 +346,10 @@ dependencies {
//语种切换框架:https://github.com/getActivity/MultiLanguages
implementation 'com.github.getActivity:MultiLanguages:b47f7be' //9.3
- def mail_version = '1.6.7'
- implementation "com.sun.mail:android-mail:$mail_version"
- implementation "com.sun.mail:android-activation:$mail_version"
+ // https://jakartaee.github.io/mail-api/Android
+ def mail_version = '2.0.1'
+ implementation "com.sun.mail:jakarta.mail:$mail_version"
+ implementation "com.sun.activation:jakarta.activation:$mail_version"
//国密算法SM4 的JAVA实现(基于BC实现)
def bouncycastle_version = '1.77'
@@ -396,4 +397,4 @@ static def getGitCommitId() {
e.printStackTrace()
return ""
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/mail/EmailSender.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/mail/EmailSender.kt
index 2b76411f..7a52f8d5 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/utils/mail/EmailSender.kt
+++ b/app/src/main/java/com/idormy/sms/forwarder/utils/mail/EmailSender.kt
@@ -3,14 +3,16 @@ package com.idormy.sms.forwarder.utils.mail
import android.text.Html
import android.text.Spanned
import com.idormy.sms.forwarder.utils.Log
+import com.sun.mail.util.MailSSLSocketFactory
+import jakarta.mail.Authenticator
+import jakarta.mail.PasswordAuthentication
import org.bouncycastle.openpgp.PGPPublicKeyRing
import org.bouncycastle.openpgp.PGPSecretKeyRing
import java.io.File
import java.security.PrivateKey
import java.security.cert.X509Certificate
import java.util.Properties
-import javax.mail.Authenticator
-import javax.mail.PasswordAuthentication
+
@Suppress("PrivatePropertyName", "DEPRECATION")
class EmailSender(
@@ -32,7 +34,6 @@ class EmailSender(
private val listener: EmailTaskListener? = null,
// 安全选项
private val openSSL: Boolean = false, //是否开启ssl验证 默认关闭
- private val sslFactory: String = "javax.net.ssl.SSLSocketFactory", //SSL构建类名
private val startTls: Boolean = false, //是否开启starttls加密方式 默认关闭
// 邮件加密方式: S/MIME、OpenPGP、Plain(不传证书)
private val encryptionProtocol: String = "S/MIME",
@@ -58,7 +59,11 @@ class EmailSender(
// 设置是否启用 SSL 连接
if (openSSL) {
put("mail.smtp.ssl.enable", "true")
- put("mail.smtp.socketFactory.class", sslFactory)
+ // 使用 TLSv1.2 协议 & 信任所有主机
+ val sf = MailSSLSocketFactory("TLSv1.2")
+ sf.setTrustedHosts("*")
+ put("mail.smtp.ssl.socketFactory", sf)
+ put("mail.smtp.ssl.protocols", "TLSv1.2")
}
// 设置是否启用 TLS 连接
if (startTls) {
@@ -171,4 +176,4 @@ class EmailSender(
return PasswordAuthentication(userName, password)
}
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/mail/PgpUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/mail/PgpUtils.kt
index dcb8f7ca..ba27673a 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/utils/mail/PgpUtils.kt
+++ b/app/src/main/java/com/idormy/sms/forwarder/utils/mail/PgpUtils.kt
@@ -1,6 +1,18 @@
package com.idormy.sms.forwarder.utils.mail
import com.idormy.sms.forwarder.utils.Log
+import jakarta.activation.DataHandler
+import jakarta.activation.FileDataSource
+import jakarta.mail.Authenticator
+import jakarta.mail.Message
+import jakarta.mail.Session
+import jakarta.mail.Transport
+import jakarta.mail.internet.InternetAddress
+import jakarta.mail.internet.MimeBodyPart
+import jakarta.mail.internet.MimeMessage
+import jakarta.mail.internet.MimeMultipart
+import jakarta.mail.internet.MimeUtility
+import jakarta.mail.util.ByteArrayDataSource
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.bouncycastle.jce.provider.BouncyCastleProvider
@@ -22,18 +34,6 @@ import java.io.InputStream
import java.security.Security
import java.util.Date
import java.util.Properties
-import javax.activation.DataHandler
-import javax.activation.FileDataSource
-import javax.mail.Authenticator
-import javax.mail.Message
-import javax.mail.Session
-import javax.mail.Transport
-import javax.mail.internet.InternetAddress
-import javax.mail.internet.MimeBodyPart
-import javax.mail.internet.MimeMessage
-import javax.mail.internet.MimeMultipart
-import javax.mail.internet.MimeUtility
-import javax.mail.util.ByteArrayDataSource
@Suppress("PrivatePropertyName")
@@ -244,4 +244,3 @@ class PgpUtils(
}
}
-
diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/mail/SmimeUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/mail/SmimeUtils.kt
index b14328e0..70b9151e 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/utils/mail/SmimeUtils.kt
+++ b/app/src/main/java/com/idormy/sms/forwarder/utils/mail/SmimeUtils.kt
@@ -1,6 +1,17 @@
package com.idormy.sms.forwarder.utils.mail
import com.idormy.sms.forwarder.utils.Log
+import jakarta.activation.DataHandler
+import jakarta.activation.FileDataSource
+import jakarta.mail.Authenticator
+import jakarta.mail.Message
+import jakarta.mail.Session
+import jakarta.mail.Transport
+import jakarta.mail.internet.InternetAddress
+import jakarta.mail.internet.MimeBodyPart
+import jakarta.mail.internet.MimeMessage
+import jakarta.mail.internet.MimeMultipart
+import jakarta.mail.internet.MimeUtility
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.bouncycastle.cert.jcajce.JcaCertStore
@@ -24,17 +35,7 @@ import java.security.Security
import java.security.cert.X509Certificate
import java.util.Date
import java.util.Properties
-import javax.activation.DataHandler
-import javax.activation.FileDataSource
-import javax.mail.Authenticator
-import javax.mail.Message
-import javax.mail.Session
-import javax.mail.Transport
-import javax.mail.internet.InternetAddress
-import javax.mail.internet.MimeBodyPart
-import javax.mail.internet.MimeMessage
-import javax.mail.internet.MimeMultipart
-import javax.mail.internet.MimeUtility
+
@Suppress("PrivatePropertyName")
class SmimeUtils(
@@ -249,4 +250,4 @@ class SmimeUtils(
return encryptedMessage
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/EmailUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/EmailUtils.kt
index c9b68296..43ce1115 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/EmailUtils.kt
+++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/EmailUtils.kt
@@ -137,6 +137,14 @@ class EmailUtils {
setting.fromEmail += setting.mailType
}
+ "@icloud.com" -> {
+ setting.host = "smtp.mail.me.com"
+ setting.port = "587"
+ setting.ssl = false
+ setting.startTls = true
+ setting.fromEmail += setting.mailType
+ }
+
else -> {}
}
@@ -346,4 +354,4 @@ class EmailUtils {
}
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 5055fce0..4f7a2b5b 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -127,6 +127,7 @@
- \@sina.cn
- \@139.com
- \@189.cn
+ - \@icloud.com
- @string/other_mail_type
@@ -142,4 +143,4 @@
- UTF-32BE
-
\ No newline at end of file
+
diff --git a/gradle.properties b/gradle.properties
index 3a27ffdd..03eccd5c 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -6,14 +6,14 @@
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
-org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# 是否打包APK,打正式包时请设置为true,使用正式的签名
isNeedPackage=true
-isNeedClean=false
+isNeedClean=true
# 是否排除Frpc动态库,打正式包时请设置为true
excludeFrpclib=true
# 是否使用leakcanary检测内存泄漏,打正式包时请设置为false