UtilityLibAPI 1.2512.502__tar.gz → 1.2512.503__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (16) hide show
  1. {utilitylibapi-1.2512.502/src/UtilityLibAPI.egg-info → utilitylibapi-1.2512.503}/PKG-INFO +1 -1
  2. {utilitylibapi-1.2512.502 → utilitylibapi-1.2512.503}/pyproject.toml +1 -1
  3. {utilitylibapi-1.2512.502 → utilitylibapi-1.2512.503}/src/UtilityLibAPI/MailSenderLib.py +68 -1
  4. {utilitylibapi-1.2512.502 → utilitylibapi-1.2512.503/src/UtilityLibAPI.egg-info}/PKG-INFO +1 -1
  5. {utilitylibapi-1.2512.502 → utilitylibapi-1.2512.503}/LICENSE +0 -0
  6. {utilitylibapi-1.2512.502 → utilitylibapi-1.2512.503}/README.md +0 -0
  7. {utilitylibapi-1.2512.502 → utilitylibapi-1.2512.503}/setup.cfg +0 -0
  8. {utilitylibapi-1.2512.502 → utilitylibapi-1.2512.503}/src/UtilityLibAPI/Archive7zLib.py +0 -0
  9. {utilitylibapi-1.2512.502 → utilitylibapi-1.2512.503}/src/UtilityLibAPI/EnDeCodeLib.py +0 -0
  10. {utilitylibapi-1.2512.502 → utilitylibapi-1.2512.503}/src/UtilityLibAPI/ExtWrapper7zLib.py +0 -0
  11. {utilitylibapi-1.2512.502 → utilitylibapi-1.2512.503}/src/UtilityLibAPI/SessionVARLib.py +0 -0
  12. {utilitylibapi-1.2512.502 → utilitylibapi-1.2512.503}/src/UtilityLibAPI/__init__.py +0 -0
  13. {utilitylibapi-1.2512.502 → utilitylibapi-1.2512.503}/src/UtilityLibAPI.egg-info/SOURCES.txt +0 -0
  14. {utilitylibapi-1.2512.502 → utilitylibapi-1.2512.503}/src/UtilityLibAPI.egg-info/dependency_links.txt +0 -0
  15. {utilitylibapi-1.2512.502 → utilitylibapi-1.2512.503}/src/UtilityLibAPI.egg-info/requires.txt +0 -0
  16. {utilitylibapi-1.2512.502 → utilitylibapi-1.2512.503}/src/UtilityLibAPI.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: UtilityLibAPI
3
- Version: 1.2512.502
3
+ Version: 1.2512.503
4
4
  Summary: UtilityLibAPI Python package
5
5
  Author-email: James Lin <tylin123@ms27.hinet.net>
6
6
  License: Copyright (c) 2025 James Lin **UtilityLibAPI**
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "UtilityLibAPI"
7
- version = "1.2512.0502"
7
+ version = "1.2512.0503"
8
8
  description = "UtilityLibAPI Python package"
9
9
  authors = [
10
10
  { name="James Lin", email="tylin123@ms27.hinet.net" }
@@ -35,6 +35,74 @@ class CLASS_MailSender:
35
35
  # ======================================================================
36
36
  self.OnAfterSendSuccess: Optional[Callable[[str], None]] = None
37
37
  self.OnAfterSendFailure: Optional[Callable[[str], None]] = None
38
+ # ============================================================
39
+ # ⭐⭐ 新增:維持 SMTP 連線用變數
40
+ # ============================================================
41
+ self.CVobj_Server: Optional[smtplib.SMTP] = None
42
+
43
+ # ################################################################################
44
+ # [預防 Mail Server 中斷連線]
45
+ # 手動控制連線
46
+ # mailer.CUF_Open()
47
+ # mailer.CUF_SendMail(...)
48
+ # mailer.CUF_Close()
49
+ # ------------------------------------------------------------
50
+ # 每 5 分鐘預防性重連
51
+ # mailer.CUF_Reconnect()
52
+ # ------------------------------------------------------------
53
+ # 如果 SendMail 失敗,要重連
54
+ # if not mailer.CUF_SendMail(...):
55
+ # mailer.CUF_Reconnect()
56
+ # ################################################################################
57
+
58
+ # ================================================================================
59
+ # ⭐⭐⭐ 新增函數:CUF_Open() ⭐⭐⭐
60
+ # ================================================================================
61
+ def CUF_Open(self) -> bool:
62
+ """建立 SMTP 連線(長連線模式)"""
63
+ try:
64
+ if self.CVobj_Server:
65
+ return True
66
+
67
+ if self.Pmb_UseSSL:
68
+ server = smtplib.SMTP_SSL(self.Pms_SMTP_Server, self.Pmi_Port)
69
+ else:
70
+ server = smtplib.SMTP(self.Pms_SMTP_Server, self.Pmi_Port)
71
+ server.ehlo()
72
+ server.starttls()
73
+
74
+ server.login(self.Pms_Account, self.Pms_Password)
75
+ self.CVobj_Server = server
76
+ return True
77
+ except Exception as e:
78
+ print("❌ CUF_Open Error:", e)
79
+ self.CVobj_Server = None
80
+ return False
81
+
82
+
83
+ # ================================================================================
84
+ # ⭐⭐⭐ 新增函數:CUF_Close() ⭐⭐⭐
85
+ # ================================================================================
86
+ def CUF_Close(self):
87
+ """關閉 SMTP 長連線"""
88
+ try:
89
+ if self.CVobj_Server:
90
+ try:
91
+ self.CVobj_Server.quit()
92
+ except:
93
+ pass
94
+ self.CVobj_Server = None
95
+ except:
96
+ self.CVobj_Server = None
97
+
98
+
99
+ # ================================================================================
100
+ # ⭐⭐⭐ 新增函數:CUF_Reconnect() ⭐⭐⭐
101
+ # ================================================================================
102
+ def CUF_Reconnect(self) -> bool:
103
+ """強制重新連線"""
104
+ self.CUF_Close()
105
+ return self.CUF_Open()
38
106
 
39
107
 
40
108
  #------------------------------------------------------------
@@ -152,7 +220,6 @@ class CLASS_MailSender:
152
220
  return False
153
221
 
154
222
 
155
-
156
223
  # ================================================================================
157
224
  # [範例]
158
225
  # 匯入剛才寫好的 CLASS_MailSender
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: UtilityLibAPI
3
- Version: 1.2512.502
3
+ Version: 1.2512.503
4
4
  Summary: UtilityLibAPI Python package
5
5
  Author-email: James Lin <tylin123@ms27.hinet.net>
6
6
  License: Copyright (c) 2025 James Lin **UtilityLibAPI**