django, чтобы отправить И получить электронное письмо?

Как вы упомянули, установка average_method дает разумные значения.

normalized_mutual_info_score([0]*100001, [0]*100000 + [1],average_method='arithmetic')
#3.166757680223739e-14

Я бы предложил использовать arithmetic, так как это будет значение по умолчанию в следующей версии 0.22, ссылка .

22
задан Community 23 May 2017 в 11:54
поделиться

2 ответа

Существует приложение под названием jutda-helpdesk , которое использует Python poplib и imaplib для обработки входящих электронных писем. Вам просто нужно иметь учетную запись где-нибудь с доступом по протоколу POP3 или IMAP.

Это адаптировано из их get_email.py :

def process_mail(mb):
    print "Processing: %s" % q
    if mb.email_box_type == 'pop3':
        if mb.email_box_ssl:
            if not mb.email_box_port: mb.email_box_port = 995
            server = poplib.POP3_SSL(mb.email_box_host, int(mb.email_box_port))
        else:
            if not mb.email_box_port: mb.email_box_port = 110
            server = poplib.POP3(mb.email_box_host, int(mb.email_box_port))
        server.getwelcome()
        server.user(mb.email_box_user)
        server.pass_(mb.email_box_pass)

        messagesInfo = server.list()[1]

        for msg in messagesInfo:
            msgNum = msg.split(" ")[0]
            msgSize = msg.split(" ")[1]
            full_message = "\n".join(server.retr(msgNum)[1])

            # Do something with the message

            server.dele(msgNum)
        server.quit()

    elif mb.email_box_type == 'imap':
        if mb.email_box_ssl:
            if not mb.email_box_port: mb.email_box_port = 993
            server = imaplib.IMAP4_SSL(mb.email_box_host, int(mb.email_box_port))
        else:
            if not mb.email_box_port: mb.email_box_port = 143
            server = imaplib.IMAP4(mb.email_box_host, int(mb.email_box_port))
        server.login(mb.email_box_user, mb.email_box_pass)
        server.select(mb.email_box_imap_folder)
        status, data = server.search(None, 'ALL')
        for num in data[0].split():
            status, data = server.fetch(num, '(RFC822)')
            full_message = data[0][1]

            # Do something with the message

            server.store(num, '+FLAGS', '\\Deleted')
        server.expunge()
        server.close()
        server.logout()

mb - это просто некоторый объект для хранения всей информации почтового сервера, остальное должно быть довольно ясно.

Возможно, вам понадобится проверить документы на poplib и imaplib, чтобы получить конкретные части сообщения, но, надеюсь, этого достаточно, чтобы вы начали.

19
ответ дан 29 November 2019 в 05:29
поделиться

Django действительно задуман как веб-сервер (ну, как фреймворк, который вписывается в веб-сервер), а не как почтовый сервер. Я полагаю, вы могли бы поместить некоторый код в веб-приложение Django, которое запускает почтовый сервер, используя код, показанный в том вопросе, на который вы ссылались, но я действительно не рекомендовал бы его; это злоупотребление возможностями динамического веб-программирования.

Обычная практика - иметь отдельные почтовые и веб-серверы, и для этого вы захотите рассмотреть что-то вроде Sendmail или (еще лучше) Postfix. Я думаю, что для POP3 вам понадобится что-то вроде Dovecot или Courier. (Разумеется, почтовый сервер может уведомлять ваше веб-приложение о получении электронных писем, чтобы оно могло действовать на них, если вы этого хотите.)

РЕДАКТИРОВАТЬ : в ответ на ваши комментарии: да, вы пытаетесь создать (или хотя бы использовать) почтовый сервер. Сервер электронной почты - это просто программа, которая получает электронные письма (и может быть в состоянии отправлять их также, но вам это не нужно).

Вы определенно можете написать небольшой почтовый сервер на Python, который просто получает эти электронные письма и сохраняет их. изображения в файловую систему или базу данных или что-то еще. (Возможно, стоит задать новый вопрос, о) Но не включайте его в свое веб-приложение Django; сохранить его как отдельную программу.

Вы точно могли бы написать небольшой почтовый сервер на Python, который просто получает эти электронные письма и сохраняет изображения в файловую систему, базу данных или что-то еще. (Возможно, стоит задать новый вопрос, о) Но не включайте его в свое веб-приложение Django; сохранить его как отдельную программу.

Вы точно могли бы написать небольшой почтовый сервер на Python, который просто получает эти электронные письма и сохраняет изображения в файловую систему, базу данных или что-то еще. (Возможно, стоит задать новый вопрос, о) Но не включайте его в свое веб-приложение Django; сохранить его как отдельную программу.

2
ответ дан 29 November 2019 в 05:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: