Fichiers
`files.list`, `list_all`, `iterate`, `get`, `download`, `list_links`, `list_all_links`, `iterate_links`, `create_link`, `revoke_link`, `stats`, `upload`, `delete` et `delete_many`.
Toutes les méthodes
from pathlib import Path from openemail import openemail page = openemail.files.list(kind='pdf', sort='largest')file = page['items'][0] Path(file['filename']).write_bytes(openemail.files.download(file['id'])) links = openemail.files.list_all_links(file['id'])print([(link['url'], link['downloads']) for link in links]) stats = openemail.files.stats()print(stats['totals']['files'], stats['uploaded']['bytes'])Chaque fichier que contient la boîte aux lettres, pièces jointes envoyées et reçues et fichiers importés, c'est-à-dire la page Fichiers de l'application. download renvoie le fichier entier sous forme de bytes, les liens sont les liens de téléchargement sous lesquels un fichier est parti, avec le nombre de fois où chacun a été récupéré, et stats correspond à l'onglet Statistiques.
list, list_all et iterate prennent q, kind et sort, ainsi que direction (inbound, outbound ou uploaded), address, les fichiers d'une adresse comparée sans tenir compte de la casse, et since et until, une datetime ou une chaîne ISO 8601. since inclut son moment et until s'arrête juste avant.
Lire demande files:read, et importer, supprimer et publier ou révoquer des liens demandent files:write, qui inclut files:read. Une clé créée avant que les fichiers aient leurs propres droits a reçu les droits correspondants. Une clé limitée à certaines adresses ou certains domaines ne voit que les fichiers de ceux-ci.
Liens publics
from openemail import openemail uploads = openemail.files.list_all(direction='uploaded', since='2026-09-01') file = uploads[0] link = openemail.files.create_link(file['id'], domain='acme.com')print(link['url']) openemail.files.revoke_link(file['id'], link['id'])create_link publie un fichier via un lien de téléchargement public qui s'ouvre sans connexion, et renvoie ce lien. Le lien est hébergé sur l'hôte de fichiers de domain si ce domaine en a un, par exemple files.acme.com, sinon sur l'hôte de fichiers de l'adresse à laquelle appartient le fichier, sinon sur l'adresse de l'API. Un fichier arrivé ou parti avec un message est d'abord copié vers le stockage public, et un programme ou un script est refusé avec un 422 file_unshareable.
Chaque create_link crée un nouveau lien : il n'est donc jamais réessayé après une réponse perdue, cherchez d'abord le lien avec list_links. revoke_link désactive définitivement un lien, y compris dans les messages déjà partis, et le renvoie avec revokedAt renseigné. Révoquer deux fois est sans risque, et un lien inconnu donne un 404.
Importer et supprimer
from pathlib import Path from openemail import openemail upload = openemail.files.upload( Path('price-list.pdf').read_bytes(), filename='price-list.pdf', content_type='application/pdf',) if upload['deletable']: openemail.files.delete(upload['id']) result = openemail.files.delete_many([ 'file_0c4e7a91d2b84f63a5e19b7d', 'file_6bb640f5b99e47deb758f1f5',])for kept in result['kept']: print(kept['filename'], kept['reason'])upload enregistre les octets tels quels, jusqu'à 100 Mo, sous le nom filename, et renvoie le fichier, dont un envoi joint l'id sous la forme {'fileId': upload['id']}. Passez content_type, sinon les octets sont enregistrés comme application/octet-stream. Il n'est jamais réessayé, car une seconde tentative enregistrerait une seconde copie.
Seul un fichier importé dont rien ne dépend peut être supprimé, et deletable et usage sur chaque fichier l'indiquent à l'avance. delete refuse tout autre fichier avec un 409 file_in_use. delete_many prend jusqu'à 100 id, supprime ce qu'il peut et signale le reste dans kept, chacun avec sa raison, et dans missing.
upload accepte bytes, bytearray ou memoryview. Il attend une réponse au moins 600 secondes, aussi court que soit le timeout du client, sauf si vous passez timeout= à l'appel, et un filename vide lève ValueError avant tout envoi.
Référence
files.list()Référence complètefiles.list_all()Référence complètefiles.iterate()Référence complètefiles.get()Référence complètefiles.download()Référence complètefiles.list_links()Référence complètefiles.list_all_links()Référence complètefiles.iterate_links()Référence complètefiles.create_link()Référence complètefiles.revoke_link()Référence complètefiles.stats()Référence complètefiles.upload()Référence complètefiles.delete()Référence complètefiles.delete_many()Référence complète