From 063cb9ae2f473e69bb238f3ab49e084ef0378a02 Mon Sep 17 00:00:00 2001 From: BigPickle Date: Sat, 18 Jul 2026 03:52:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DRelease?= =?UTF-8?q?=E7=BC=96=E8=AF=91R8=E6=B7=B7=E6=B7=86=E5=AF=BC=E8=87=B4SMTP?= =?UTF-8?q?=E5=8F=91=E9=80=81=E5=A4=B1=E8=B4=A5=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E9=82=AE=E4=BB=B6=E5=8F=91=E9=80=81=E8=B0=83=E8=AF=95=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aes/proguard-rules.pro | 10 ++++ libaes/proguard-rules.pro | 7 +++ .../studio/libaes/utils/APPMSGMailUtils.java | 50 ++++++++++++++++--- 3 files changed, 59 insertions(+), 8 deletions(-) diff --git a/aes/proguard-rules.pro b/aes/proguard-rules.pro index a18de74..cb2d95d 100644 --- a/aes/proguard-rules.pro +++ b/aes/proguard-rules.pro @@ -120,6 +120,16 @@ # JSch SSH组件 -keep class com.jcraft.jsch.** { *; } +# JavaMail SMTP(邮件发送核心库,Release编译必须保留) +-dontwarn javax.mail.** +-keep class javax.mail.** { *; } +-keep class javax.mail.internet.** { *; } +-dontwarn javax.activation.** +-keep class javax.activation.** { *; } +-dontwarn com.sun.mail.** +-keep class com.sun.mail.** { *; } +-keepclassmembers class * extends javax.mail.Authenticator { *; } + # AndroidX 基础组件 -keep class androidx.appcompat.** { *; } -keep interface androidx.appcompat.** { *; } diff --git a/libaes/proguard-rules.pro b/libaes/proguard-rules.pro index 536058a..f610377 100644 --- a/libaes/proguard-rules.pro +++ b/libaes/proguard-rules.pro @@ -9,6 +9,13 @@ # Add any project specific keep options here: +# JavaMail SMTP(邮件发送核心库,Release编译必须保留) +-dontwarn javax.mail.** +-keep class javax.mail.** { *; } +-keep class javax.mail.internet.** { *; } +-dontwarn com.sun.mail.** +-keep class com.sun.mail.** { *; } + # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: diff --git a/libaes/src/main/java/cc/winboll/studio/libaes/utils/APPMSGMailUtils.java b/libaes/src/main/java/cc/winboll/studio/libaes/utils/APPMSGMailUtils.java index 662a242..93c75f6 100644 --- a/libaes/src/main/java/cc/winboll/studio/libaes/utils/APPMSGMailUtils.java +++ b/libaes/src/main/java/cc/winboll/studio/libaes/utils/APPMSGMailUtils.java @@ -43,6 +43,10 @@ public class APPMSGMailUtils { // public static void saveConfig(Context context, String server, String port, String sender, String authCode, String recipient) { + LogUtils.d(TAG, "saveConfig: 开始保存SMTP配置"); + LogUtils.d(TAG, "saveConfig: server=" + server + ", port=" + port); + LogUtils.d(TAG, "saveConfig: sender=" + sender + ", authCode长度=" + (authCode != null ? authCode.length() : 0)); + LogUtils.d(TAG, "saveConfig: recipient=" + recipient); SharedPreferences sp = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.putString(KEY_SMTP_SERVER, server); @@ -51,7 +55,7 @@ public class APPMSGMailUtils { editor.putString(KEY_SMTP_AUTH_CODE, authCode); editor.putString(KEY_SMTP_RECIPIENT, recipient); editor.apply(); - LogUtils.d(TAG, "saveConfig: SMTP配置已保存"); + LogUtils.d(TAG, "saveConfig: SMTP配置已保存完成"); } // @@ -59,27 +63,37 @@ public class APPMSGMailUtils { // public static String getServer(Context context) { SharedPreferences sp = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE); - return sp.getString(KEY_SMTP_SERVER, DEFAULT_SMTP_SERVER); + String value = sp.getString(KEY_SMTP_SERVER, DEFAULT_SMTP_SERVER); + LogUtils.d(TAG, "getServer: " + value); + return value; } public static String getPort(Context context) { SharedPreferences sp = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE); - return sp.getString(KEY_SMTP_PORT, DEFAULT_SMTP_PORT); + String value = sp.getString(KEY_SMTP_PORT, DEFAULT_SMTP_PORT); + LogUtils.d(TAG, "getPort: " + value); + return value; } public static String getSender(Context context) { SharedPreferences sp = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE); - return sp.getString(KEY_SMTP_SENDER, ""); + String value = sp.getString(KEY_SMTP_SENDER, ""); + LogUtils.d(TAG, "getSender: " + value); + return value; } public static String getAuthCode(Context context) { SharedPreferences sp = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE); - return sp.getString(KEY_SMTP_AUTH_CODE, ""); + String value = sp.getString(KEY_SMTP_AUTH_CODE, ""); + LogUtils.d(TAG, "getAuthCode: 长度=" + (value != null ? value.length() : 0)); + return value; } public static String getRecipient(Context context) { SharedPreferences sp = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE); - return sp.getString(KEY_SMTP_RECIPIENT, ""); + String value = sp.getString(KEY_SMTP_RECIPIENT, ""); + LogUtils.d(TAG, "getRecipient: " + value); + return value; } // @@ -103,7 +117,13 @@ public class APPMSGMailUtils { // public static void sendMail(final Context context, final String subject, final String content, final String recipients) { - if (!isEnabled(context)) { + LogUtils.d(TAG, "sendMail: ====== 开始调用sendMail ======"); + LogUtils.d(TAG, "sendMail: subject=" + subject); + LogUtils.d(TAG, "sendMail: content长度=" + (content != null ? content.length() : 0)); + LogUtils.d(TAG, "sendMail: recipients=" + recipients); + boolean enabled = isEnabled(context); + LogUtils.d(TAG, "sendMail: isEnabled=" + enabled); + if (!enabled) { LogUtils.d(TAG, "sendMail: SMTP邮件发送已禁用,跳过操作"); return; } @@ -111,26 +131,35 @@ public class APPMSGMailUtils { final String port = getPort(context); final String sender = getSender(context); final String authCode = getAuthCode(context); + LogUtils.d(TAG, "sendMail: server=" + server + ", port=" + port); + LogUtils.d(TAG, "sendMail: sender=" + sender + ", authCode长度=" + (authCode != null ? authCode.length() : 0)); + LogUtils.d(TAG, "sendMail: recipients=" + recipients); if (sender == null || sender.length() == 0) { + LogUtils.w(TAG, "sendMail: 请先配置发件人邮箱"); showToast(context, "请先配置发件人邮箱"); return; } if (authCode == null || authCode.length() == 0) { + LogUtils.w(TAG, "sendMail: 请先配置邮箱授权码"); showToast(context, "请先配置邮箱授权码"); return; } if (recipients == null || recipients.length() == 0) { + LogUtils.w(TAG, "sendMail: 收件人不能为空"); showToast(context, "收件人不能为空"); return; } + LogUtils.d(TAG, "sendMail: 参数校验通过,准备启动发送线程"); showToast(context, "正在发送邮件..."); new Thread(new Runnable() { @Override public void run() { + LogUtils.d(TAG, "sendMail: 发送线程已启动"); try { + LogUtils.d(TAG, "sendMail: 创建邮件属性配置"); Properties props = new Properties(); props.put("mail.smtp.host", server); props.put("mail.smtp.port", port); @@ -138,13 +167,16 @@ public class APPMSGMailUtils { props.put("mail.smtp.socketFactory.port", port); props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); + LogUtils.d(TAG, "sendMail: 创建邮件会话"); Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { + LogUtils.d(TAG, "sendMail: 身份验证回调触发"); return new PasswordAuthentication(sender, authCode); } }); + LogUtils.d(TAG, "sendMail: 创建MimeMessage"); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(sender)); message.setRecipients(Message.RecipientType.TO, @@ -152,16 +184,18 @@ public class APPMSGMailUtils { message.setSubject(subject); message.setText(content); + LogUtils.d(TAG, "sendMail: 调用Transport.send开始发送"); Transport.send(message); LogUtils.d(TAG, "sendMail: 邮件发送成功"); showToast(context, "邮件发送成功"); } catch (Exception e) { - LogUtils.e(TAG, "sendMail: 邮件发送失败", e); + LogUtils.e(TAG, "sendMail: 邮件发送异常", e); showToast(context, "邮件发送失败: " + e.getMessage()); } } }).start(); + LogUtils.d(TAG, "sendMail: ====== sendMail调用结束 ======"); } //