Анализировать и декодировать текст письма в aiosmtpd, выполнять замену строк и повторно вводитьPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Анализировать и декодировать текст письма в aiosmtpd, выполнять замену строк и повторно вводить

Сообщение Anonymous »

Я начал с smtpd, чтобы обрабатывать почтовую очередь, анализировать входящие электронные письма и отправлять их обратно получателям (используя smtpdlib.sendmail).
Я перешел на aiosmtpd, так как мне нужна была многопоточная обработка (а smtpd однопоточный, да и к тому же похоже, что его больше не поддерживают).
Кстати, меня озадачивает aiosmtpd управление почтой содержимым конвертов, оно кажется гораздо более детальным, чем раньше, поэтому хорошо, если вам нужна действительно тонкая настройка , но несколько великоват, если вы просто хотите обработать тело, не изменяя остальную часть.
Чтобы сделать пример, просто необходим метод smtpd process_message Параметр data_decode=True для обработки и декодирования тела письма, ничего не трогая, в то время как метод aiosmtpd HANDLE_data, похоже, неспособен автоматически декодировать почтовый конверт и часто выдает исключения со встроенными изображениями, вложениями и т. д.
EDIT добавлены примеры кода, сначала smtpd: следующий код создаст экземпляр smtp-сервера, ожидающего почты на порту 10025 и доставка на 10027 через smtplib (оба локальные). Безопасно работать с переменной data (в основном выполнять подстановку строк, моя цель) для всех видов почты (текстовых/html, со встроенными изображениями, вложениями...)

Код: Выделить всё

class PROXY_SMTP(smtpd.SMTPServer):
def process_message(self, peer, mailfrom, rcpttos, data, decode_data=True):
server = smtplib.SMTP('localhost', 10027)
server.sendmail(mailfrom, rcpttos, data)
server.quit()
server = PROXY_SMTP(('127.0.0.1', 10025), None)
asyncore.loop()
Предыдущий код работал хорошо, но в однопоточном режиме (= 1 письмо одновременно), поэтому я переключился на aiosmtpd, чтобы иметь параллельную обработку почты. Тот же пример с aiosmtpd будет выглядеть примерно так:

Код: Выделить всё

class MyHandler:
async def handle_DATA(self, server, session, envelope):
peer = session.peer
mailfrom = envelope.mail_from
rcpttos = envelope.rcpt_tos
data = envelope.content.decode()
server = smtplib.SMTP('localhost', 10027)
server.sendmail(mailfrom, rcpttos, data)
server.quit()

my_handler = MyHandler()

async def main(loop):
my_controller = Controller(my_handler, hostname='127.0.0.1', port=10025)
my_controller.start()
loop = asyncio.get_event_loop()
loop.create_task(main(loop=loop))
try:
loop.run_forever()
Этот код хорошо работает для текстовых писем, но дает исключения при декодировании конверта.контент с любым сложным письмом (мим-контент, вложения...)
Как я могу проанализировать и декодировать текст письма в aiosmtpd, выполнить замену строк, как я это сделал в smtpd, и повторно внедрить его через smtplib?

Подробнее здесь: https://stackoverflow.com/questions/599 ... nd-reinjec
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как с помощью PHP декодировать тело электронного письма с символами, отличными от ASCII, в обычный текст?
    Anonymous » » в форуме Php
    0 Ответы
    58 Просмотры
    Последнее сообщение Anonymous
  • Python aiosmtpd заставляет работать аутентификацию
    Anonymous » » в форуме Python
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • Как правильно поддерживать STARTTLS с помощью aiosmtpd?
    Anonymous » » в форуме Python
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Как правильно поддерживать STARTTLS с помощью aiosmtpd?
    Anonymous » » в форуме Python
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • PHP – Как декодировать или анализировать смайлики из строки Юникода? [дубликат]
    Гость » » в форуме Php
    0 Ответы
    43 Просмотры
    Последнее сообщение Гость

Вернуться в «Python»