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

2.2 KiB

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)

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