#!/bin/sh

mail_uid=${1:-"1"}

out_dir=${2:-/tmp/mail_dir}




echo "unload_mail: ${mail_uid} ${out_dir}"

export IMAP_UID="${mail_uid}"
export OUT_DIR="${out_dir}"


command='
import imaplib
import os
import sys

from mail_utils import init_imap_session

mail_uid = os.environ.get("IMAP_UID")
out_dir = os.environ.get("OUT_DIR")


if not os.path.exists(out_dir):
    os.makedirs(out_dir)

try:

    mail = init_imap_session("config.ini")

    # Используем BODY.PEEK[], чтобы сервер НЕ ставил отметку "Прочитано"
    status, data = mail.uid("fetch", mail_uid, "(BODY.PEEK[])")
    
    if status == "OK" and data and isinstance(data[0],tuple):
        # data[0][1] содержит сырое тело письма в байтах
        raw_email = data[0][1]
        
        # Формируем путь для сохранения 
        filename = f"{mail_uid}.eml"
        filepath = os.path.join(out_dir, filename)
        
        with open(filepath, "wb") as f:
            f.write(raw_email)
            
        print(f"Письмо {mail_uid} успешно выгружено в {filepath}")
    else:
        print(f"unload_mail: Ошибка: Не удалось найти или скачать письмо с UID {mail_uid}", file=sys.stderr)
        mail.logout()
        sys.exit(1)

    mail.logout()
    sys.exit(0)

except Exception as e:
    print("unload_mail: Ошибка при работе с IMAP:", e, file=sys.stderr)
    sys.exit(1)
'




response=$(python3 -B -c "${command}")
r=$?
if [ $r -ne 0 ]; then
echo "unload_mail: Ошибка выгрузки uid=${mail_uid} ${response}"
exit $r
fi

echo "unload_mail: OK"
exit 0
