La mia applicazione è scritta in python. Quello che sto facendo è che sto eseguendo uno script su ogni e-mail ricevuta da postfix e faccio qualcosa con il contenuto dell'email. Procmail è responsabile per l'esecuzione dello script prendendo l'email come input. Il problema è iniziato quando stavo convertendo il messaggio di input (può essere testo) in oggetto email_message (perché quest'ultimo è utile). Sto usando email.message_from_string (dove email è il modulo email predefinito, fornito con python).Il corpo dell'email è a volte una stringa e talvolta un elenco. Perché?
import email message = email.message_from_string(original_mail_content) message_body = message.get_payload()
Questa message_body è a volte tornando una lista [esempio email.message.Message, esempio email.message.Message] ea volte restituendo una stringa (contenuto del corpo reale della posta elettronica in arrivo). Perché è così. E anche io ho trovato un'altra osservazione. Quando stavo navigando attraverso la docstring email.message.Message.get_payload(), ho trovato questo ..
"" " Il carico utile può essere un oggetto elenco o una stringa.Se si muta l'oggetto elenco , si modifica il carico utile del messaggio sul posto ..... "" "
Quindi, come posso ottenere un metodo generico per ottenere il corpo dell'email tramite python? Per favore aiutatemi.
Nella lista dei messaggi di cui ho parlato, ho provato a eseguire get_payload() su ciascuno degli oggetti. Entrambi restituiscono la stessa cosa. Un oggetto è un tipo di clone dell'altro, in modo che se ottengo il get_payload chiamato su una singola parte farà ??? –
Dipende da ciò che è stato inviato. Ad esempio, potresti comunemente ottenere una text/html e una versione text/plain della stessa cosa. È possibile modificare la funzione da cercare e preferire un testo/tipo di contenuto semplice rispetto ad altri tipi di testo. – bobince
impressionante bobince.Hai perfettamente ragione: D –