Come creare un e-mail e inviarlo alla cassetta postale specifico con imaplib
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:.)
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?