from django.conf import settings from django.core.management.base import BaseCommand, CommandError from zerver.lib.email_mirror import logger, process_message ## Setup ## log_format = "%(asctime)s: %(message)s" logging.basicConfig(format=log_format) formatter = logging.Formatter(log_format) file_handler = logging.FileHandler(settings.EMAIL_MIRROR_LOG_PATH) file_handler.setFormatter(formatter) logger.setLevel(logging.DEBUG) logger.addHandler(file_handler) def get_imap_messages() -> Generator[Message, None, None]: mbox = IMAP4_SSL(settings.EMAIL_GATEWAY_IMAP_SERVER, settings.EMAIL_GATEWAY_IMAP_PORT) mbox.login(settings.EMAIL_GATEWAY_LOGIN, settings.EMAIL_GATEWAY_PASSWORD) try: mbox.select(settings.EMAIL_GATEWAY_IMAP_FOLDER) try: status, num_ids_data = mbox.search( None, 'ALL' ) # type: ignore # https://github.com/python/typeshed/pull/1762 for msgid in num_ids_data[0].split(): status, msg_data = mbox.fetch(msgid, '(RFC822)') msg_as_bytes = msg_data[0][1]
from django.conf import settings from django.core.management.base import BaseCommand from zerver.lib.email_mirror import logger, process_message ## Setup ## log_format = "%(asctime)s: %(message)s" logging.basicConfig(format=log_format) formatter = logging.Formatter(log_format) file_handler = logging.FileHandler(settings.EMAIL_MIRROR_LOG_PATH) file_handler.setFormatter(formatter) logger.setLevel(logging.DEBUG) logger.addHandler(file_handler) def get_imap_messages() -> Generator[Message, None, None]: mbox = IMAP4_SSL(settings.EMAIL_GATEWAY_IMAP_SERVER, settings.EMAIL_GATEWAY_IMAP_PORT) mbox.login(settings.EMAIL_GATEWAY_LOGIN, settings.EMAIL_GATEWAY_PASSWORD) try: mbox.select(settings.EMAIL_GATEWAY_IMAP_FOLDER) try: status, num_ids_data = mbox.search(None, 'ALL') # type: ignore # https://github.com/python/typeshed/pull/1762 for msgid in num_ids_data[0].split(): status, msg_data = mbox.fetch(msgid, '(RFC822)') msg_as_bytes = msg_data[0][1] message = email.message_from_bytes(msg_as_bytes) yield message mbox.store(msgid, '+FLAGS', '\\Deleted')