mirror of
https://github.com/pppscn/SmsForwarder
synced 2025-08-03 01:17:41 +08:00
parent
b05d856f26
commit
f029048d09
@ -346,9 +346,10 @@ dependencies {
|
|||||||
//语种切换框架:https://github.com/getActivity/MultiLanguages
|
//语种切换框架:https://github.com/getActivity/MultiLanguages
|
||||||
implementation 'com.github.getActivity:MultiLanguages:b47f7be' //9.3
|
implementation 'com.github.getActivity:MultiLanguages:b47f7be' //9.3
|
||||||
|
|
||||||
def mail_version = '1.6.7'
|
// https://jakartaee.github.io/mail-api/Android
|
||||||
implementation "com.sun.mail:android-mail:$mail_version"
|
def mail_version = '2.0.1'
|
||||||
implementation "com.sun.mail:android-activation:$mail_version"
|
implementation "com.sun.mail:jakarta.mail:$mail_version"
|
||||||
|
implementation "com.sun.activation:jakarta.activation:$mail_version"
|
||||||
|
|
||||||
//国密算法SM4 的JAVA实现(基于BC实现)
|
//国密算法SM4 的JAVA实现(基于BC实现)
|
||||||
def bouncycastle_version = '1.77'
|
def bouncycastle_version = '1.77'
|
||||||
|
@ -3,14 +3,16 @@ package com.idormy.sms.forwarder.utils.mail
|
|||||||
import android.text.Html
|
import android.text.Html
|
||||||
import android.text.Spanned
|
import android.text.Spanned
|
||||||
import com.idormy.sms.forwarder.utils.Log
|
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.PGPPublicKeyRing
|
||||||
import org.bouncycastle.openpgp.PGPSecretKeyRing
|
import org.bouncycastle.openpgp.PGPSecretKeyRing
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.security.PrivateKey
|
import java.security.PrivateKey
|
||||||
import java.security.cert.X509Certificate
|
import java.security.cert.X509Certificate
|
||||||
import java.util.Properties
|
import java.util.Properties
|
||||||
import javax.mail.Authenticator
|
|
||||||
import javax.mail.PasswordAuthentication
|
|
||||||
|
|
||||||
@Suppress("PrivatePropertyName", "DEPRECATION")
|
@Suppress("PrivatePropertyName", "DEPRECATION")
|
||||||
class EmailSender(
|
class EmailSender(
|
||||||
@ -32,7 +34,6 @@ class EmailSender(
|
|||||||
private val listener: EmailTaskListener? = null,
|
private val listener: EmailTaskListener? = null,
|
||||||
// 安全选项
|
// 安全选项
|
||||||
private val openSSL: Boolean = false, //是否开启ssl验证 默认关闭
|
private val openSSL: Boolean = false, //是否开启ssl验证 默认关闭
|
||||||
private val sslFactory: String = "javax.net.ssl.SSLSocketFactory", //SSL构建类名
|
|
||||||
private val startTls: Boolean = false, //是否开启starttls加密方式 默认关闭
|
private val startTls: Boolean = false, //是否开启starttls加密方式 默认关闭
|
||||||
// 邮件加密方式: S/MIME、OpenPGP、Plain(不传证书)
|
// 邮件加密方式: S/MIME、OpenPGP、Plain(不传证书)
|
||||||
private val encryptionProtocol: String = "S/MIME",
|
private val encryptionProtocol: String = "S/MIME",
|
||||||
@ -58,7 +59,11 @@ class EmailSender(
|
|||||||
// 设置是否启用 SSL 连接
|
// 设置是否启用 SSL 连接
|
||||||
if (openSSL) {
|
if (openSSL) {
|
||||||
put("mail.smtp.ssl.enable", "true")
|
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 连接
|
// 设置是否启用 TLS 连接
|
||||||
if (startTls) {
|
if (startTls) {
|
||||||
|
@ -1,6 +1,18 @@
|
|||||||
package com.idormy.sms.forwarder.utils.mail
|
package com.idormy.sms.forwarder.utils.mail
|
||||||
|
|
||||||
import com.idormy.sms.forwarder.utils.Log
|
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.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.bouncycastle.jce.provider.BouncyCastleProvider
|
import org.bouncycastle.jce.provider.BouncyCastleProvider
|
||||||
@ -22,18 +34,6 @@ import java.io.InputStream
|
|||||||
import java.security.Security
|
import java.security.Security
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
import java.util.Properties
|
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")
|
@Suppress("PrivatePropertyName")
|
||||||
@ -244,4 +244,3 @@ class PgpUtils(
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,17 @@
|
|||||||
package com.idormy.sms.forwarder.utils.mail
|
package com.idormy.sms.forwarder.utils.mail
|
||||||
|
|
||||||
import com.idormy.sms.forwarder.utils.Log
|
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.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.bouncycastle.cert.jcajce.JcaCertStore
|
import org.bouncycastle.cert.jcajce.JcaCertStore
|
||||||
@ -24,17 +35,7 @@ import java.security.Security
|
|||||||
import java.security.cert.X509Certificate
|
import java.security.cert.X509Certificate
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
import java.util.Properties
|
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")
|
@Suppress("PrivatePropertyName")
|
||||||
class SmimeUtils(
|
class SmimeUtils(
|
||||||
|
@ -137,6 +137,14 @@ class EmailUtils {
|
|||||||
setting.fromEmail += setting.mailType
|
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 -> {}
|
else -> {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,6 +127,7 @@
|
|||||||
<item>\@sina.cn</item>
|
<item>\@sina.cn</item>
|
||||||
<item>\@139.com</item>
|
<item>\@139.com</item>
|
||||||
<item>\@189.cn</item>
|
<item>\@189.cn</item>
|
||||||
|
<item>\@icloud.com</item>
|
||||||
<item>@string/other_mail_type</item><!--注意这里不能修改-->
|
<item>@string/other_mail_type</item><!--注意这里不能修改-->
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
@ -6,14 +6,14 @@
|
|||||||
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
||||||
# Specifies the JVM arguments used for the daemon process.
|
# Specifies the JVM arguments used for the daemon process.
|
||||||
# The setting is particularly useful for tweaking memory settings.
|
# 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.
|
# When configured, Gradle will run in incubating parallel mode.
|
||||||
# This option should only be used with decoupled projects. More details, visit
|
# 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
|
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||||
# org.gradle.parallel=true
|
# org.gradle.parallel=true
|
||||||
# 是否打包APK,打正式包时请设置为true,使用正式的签名
|
# 是否打包APK,打正式包时请设置为true,使用正式的签名
|
||||||
isNeedPackage=true
|
isNeedPackage=true
|
||||||
isNeedClean=false
|
isNeedClean=true
|
||||||
# 是否排除Frpc动态库,打正式包时请设置为true
|
# 是否排除Frpc动态库,打正式包时请设置为true
|
||||||
excludeFrpclib=true
|
excludeFrpclib=true
|
||||||
# 是否使用leakcanary检测内存泄漏,打正式包时请设置为false
|
# 是否使用leakcanary检测内存泄漏,打正式包时请设置为false
|
||||||
|
Loading…
x
Reference in New Issue
Block a user