Come creare un e-mail e inviarlo alla cassetta postale specifico con imaplib

StackOverflow https://stackoverflow.com/questions/3769701

  •  04-10-2019
  •  | 
  •  

Domanda

Sto cercando di usare imaplib di Python per creare una e-mail e inviarlo a una cassetta postale con nome specifico, per esempio Posta in arrivo. Chiunque abbia un po 'di grande suggestione:.)

È stato utile?

Soluzione

Il protocollo IMAP non è progettato per inviare e-mail. È stato progettato per manipolare caselle di posta.

Per creare una e-mail e inviarlo è possibile utilizzare SMTP, come in smtplib .

Per spostare una e-mail che è già in una cassetta postale da una cartella a un'altra, è possibile copiare la posta nella cartella necessaria ed eliminarlo da quello vecchio con uid, come nella risposta here .

Altri suggerimenti

È possibile utilizzare di Python modulo incorporato imaplib e il comando append() per aggiungere un messaggio di posta elettronica a una cartella IMAP:

import imaplib

connection = imaplib.IMAP4_SSL(HOSTNAME)
connection.login(USERNAME, PASSWORD)

new_message = email.message.Message()
new_message["From"] = "hello@itsme.com"
new_message["Subject"] = "My new mail."
new_message.set_payload("This is my message.")

connection.append('INBOX', '', imaplib.Time2Internaldate(time.time()), str(new_message))

Dato che non posso ancora commentare sul commento di user3556956, ecco la risposta per python3:

connection.append('INBOX', '', imaplib.Time2Internaldate(time.time()), str(new_message).encode('utf-8'))

In breve si deve passare il messaggio come un byte invece che una stringa Python.

Non ho idea di come lo fanno, ma non Microsoft Outlook consentono di spostare una e-mail da una cartella locale in una cartella IMAP remota?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top