Spaces:
Sleeping
Sleeping
Commit ·
65f1cfe
1
Parent(s): 5863861
fix: fix email pool auto
Browse files- core/email_generator.py +15 -0
core/email_generator.py
CHANGED
|
@@ -246,7 +246,11 @@ class EmailGenerator:
|
|
| 246 |
domain = os.environ.get('EMAIL_DOMAIN', '').strip()
|
| 247 |
timeout = int(os.environ.get('MAIL_API_TIMEOUT', '15'))
|
| 248 |
|
|
|
|
|
|
|
| 249 |
if not base_url or not admin_pwd or not domain:
|
|
|
|
|
|
|
| 250 |
return None
|
| 251 |
|
| 252 |
name = self._generate_mailapi_name()
|
|
@@ -264,6 +268,7 @@ class EmailGenerator:
|
|
| 264 |
try:
|
| 265 |
resp = requests.post(url, json=payload, headers=headers, timeout=timeout)
|
| 266 |
if resp.status_code != 200:
|
|
|
|
| 267 |
return None
|
| 268 |
data = resp.json() if resp.content else {}
|
| 269 |
address = data.get('address')
|
|
@@ -271,6 +276,7 @@ class EmailGenerator:
|
|
| 271 |
address = f"{name}@{domain}"
|
| 272 |
return address
|
| 273 |
except Exception:
|
|
|
|
| 274 |
return None
|
| 275 |
|
| 276 |
def _generate_mailapi_name(self) -> str:
|
|
@@ -278,6 +284,15 @@ class EmailGenerator:
|
|
| 278 |
numbers = ''.join(random.choices(string.digits, k=random.randint(1, 3)))
|
| 279 |
letters2 = ''.join(random.choices(string.ascii_lowercase, k=random.randint(1, 3)))
|
| 280 |
return letters1 + numbers + letters2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 281 |
|
| 282 |
def _generate_random_name(self) -> str:
|
| 283 |
"""Generate a random realistic name"""
|
|
|
|
| 246 |
domain = os.environ.get('EMAIL_DOMAIN', '').strip()
|
| 247 |
timeout = int(os.environ.get('MAIL_API_TIMEOUT', '15'))
|
| 248 |
|
| 249 |
+
base_url = self._normalize_mailapi_base_url(base_url)
|
| 250 |
+
|
| 251 |
if not base_url or not admin_pwd or not domain:
|
| 252 |
+
print("[MAIL] Mail API auto-create disabled or misconfigured")
|
| 253 |
+
print(f"[MAIL] base_url set: {bool(base_url)} admin_pwd set: {bool(admin_pwd)} domain set: {bool(domain)}")
|
| 254 |
return None
|
| 255 |
|
| 256 |
name = self._generate_mailapi_name()
|
|
|
|
| 268 |
try:
|
| 269 |
resp = requests.post(url, json=payload, headers=headers, timeout=timeout)
|
| 270 |
if resp.status_code != 200:
|
| 271 |
+
print(f"[MAIL] Mail API create failed: {resp.status_code}")
|
| 272 |
return None
|
| 273 |
data = resp.json() if resp.content else {}
|
| 274 |
address = data.get('address')
|
|
|
|
| 276 |
address = f"{name}@{domain}"
|
| 277 |
return address
|
| 278 |
except Exception:
|
| 279 |
+
print("[MAIL] Mail API create request failed")
|
| 280 |
return None
|
| 281 |
|
| 282 |
def _generate_mailapi_name(self) -> str:
|
|
|
|
| 284 |
numbers = ''.join(random.choices(string.digits, k=random.randint(1, 3)))
|
| 285 |
letters2 = ''.join(random.choices(string.ascii_lowercase, k=random.randint(1, 3)))
|
| 286 |
return letters1 + numbers + letters2
|
| 287 |
+
|
| 288 |
+
def _normalize_mailapi_base_url(self, base_url: str) -> str:
|
| 289 |
+
if not base_url:
|
| 290 |
+
return base_url
|
| 291 |
+
if base_url.endswith("/api"):
|
| 292 |
+
return base_url[:-4]
|
| 293 |
+
if base_url.endswith("/api/"):
|
| 294 |
+
return base_url[:-5]
|
| 295 |
+
return base_url
|
| 296 |
|
| 297 |
def _generate_random_name(self) -> str:
|
| 298 |
"""Generate a random realistic name"""
|