Question

J'ai un e-mail que je lis avec la librairie de messagerie Python et dont j'ai besoin pour modifier les pièces jointes. La classe de message électronique contient le message " attach " méthode, mais n’a rien de tel que "détacher". Comment puis-je supprimer une pièce jointe d'un message multipart? Si possible, je souhaite le faire sans recréer le message à partir de zéro.

Je veux essentiellement:

  1. Chargez l'email
  2. Supprimer les pièces jointes mime
  3. Ajouter une nouvelle pièce jointe
Était-ce utile?

La solution

set_payload () peut aider.

  

set_payload (charge utile [, charset])

     

Définissez la charge totale de l'objet de message sur la charge utile. Il incombe au client d’assurer les invariants de la charge utile.

Un exemple interactif rapide:

>>> from email import mime,message
>>> m1 = message.Message()
>>> t1=email.MIMEText.MIMEText('t1\r\n')
>>> print t1.as_string()
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

t1

>>> m1.attach(t1)
>>> m1.is_multipart()
True
>>> m1.get_payload()
[<email.mime.text.MIMEText instance at 0x00F585A8>]
>>> t2=email.MIMEText.MIMEText('t2\r\n')
>>> m1.set_payload([t2])
>>> print m1.get_payload()[0].as_string()
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

t2

>>> 

Autres conseils

Eh bien, d’après mon expérience, dans le contexte dans lequel vous travaillez, tout est un objet Message . Le message, ses parties, pièces jointes, tout. Donc, pour accomplir ce que vous voulez faire, vous devez

  1. analyser le message à l'aide de l'API Analyseur (vous obtiendrez le objet Message racine)
  2. Parcourez la structure, en déterminant ce dont vous avez besoin et ce que vous n’avez pas (à l’aide d’une méthode d’une instance de Message, - .walk ()), - rappelez-vous que tout est un Message .
  3. Attachez tout ce que vous devez attacher aux parties que vous avez extraites et vous êtes prêt à partir.

Pour rappel, vous travaillez avec, essentiellement, une arborescence, où les objets Message avec .is_multipart () == True sont des noeuds et les objets Message avec. is_multipart () == False sont des noeuds d'extrémité (leur charge utile est une chaîne et non un tas d'objets Message ).

Voici comment je me suis débrouillé pour le faire:

  1. Définissez la charge sur une liste vide avec set_payload
  2. Créez la charge utile et joignez-la au message.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top