Imprimer pièces jointes automatiquement

baron

Membre d’élite
22 Avril 2008
1 376
332
LLN
Avec les options standard de Mail, il m semble que tu pourrais « bricoler » un truc de ce genre :

Préférences Mail > Règles :
Capture d’écran 2020-07-04 à 21.50.51.png


Comme je n'ai pas la possibilité de choisir simplement la condition "Si le message contient une pièce jointe" (peut-être est-ce différent dans une version plus récente ?), j'essaierais de ruser en lui faisant chercher tous les messages qui ne contiennent pas tel caractère (ou chaîne de caractères) le plus improbable possible.

Ensuite, il faudrait encore écrire un petit AppleScript pour assurer l'impression, mais ça je ne sais pas faire…

C'est clairement de la bidouille. Il y a sans doute des solutions plus directes…
 

baron

Membre d’élite
22 Avril 2008
1 376
332
LLN
Avant que quelqu'un ne se lance dans la rédaction d'un script (ce qui ne devrait pas être trop compliqué pour plusieurs ici), ça vaudrait la peine de déjà tester la première étape.

Au lieu du script d'impression, tu pourrais p.ex. demander à ce que la règle fasse exécuter un son puis déplacer les mails avec PJ dans un dossier spécial. Ensuite, il ne resterait qu'à lancer une impression manuelle de l'ensemble de ces mails (cmd-A, cmd-P).

Ainsi, on saurait si cette astuce permet bien de séparer les mails avec PJ du reste, et si le résultat te convient : personnellement, je reçois souvent des mails avec en signature toutes sortes de bébelles que Mail considère comme pièces jointes mais que je ne voudrais pas voir imprimer aveuglément, comme le bô logo de la boîte, les zolies images des réseaux sociaux auxquels ils participent, etc.
— Sans parler de ceux qui, plein de bonnes intentions, ajoutent :
Est-ce une bonne idée d’imprimer ce courrier ? Pensez à la nature et économisez l’encre et le papier !

:angelic:
 

zeltron54

Membre d’élite
29 Mars 2008
1 795
264
Lorraine
@iliasrem
Je peux essayer de te faire un script.
Il faut d'abord , comme a dit baron que tu construises une règle mail qui s'exécute lors de la réception d'un mail. cette règle exécutera le script.

Le script, prendra tous les messages marqués "non lu" et transférera les pièces jointes de ces mail dans un dossier de ton choix.

Il te suffira de sélectionner, dans ce dossier, les bons fichiers et de les imprimer. Ou éventuellement faire une action de dossier qui imprime les fichiers lors de leur dépôt.

Dis-moi si cela te convient.
 

iliasrem

Membre junior
29 Janvier 2013
10
0
chapelle lez herlaimont
Bonsoir,

Merci beaucoup pour vos réponses. Pour mettre toutes les pièces jointes dans un dossier, Mail me propose uniquement des dossier de ma boîte mail (imap) et pas un dossier sur mon mac.
Par exemple un nouveau dossier dans « documents ».
Est-ce possible? Ou dois-je créer un dossier dans ma boîte mail imap?
Merci beaucoup.
 

zeltron54

Membre d’élite
29 Mars 2008
1 795
264
Lorraine
@iliasrem

Bonjour,
Il faut donc que tu fasses:

1 - Créer un dossier nommé "pieces jointes mails" dans ton dossier" documents", respectes bien le nom car il est renseigné comme çà dans le script.

2 - Préparer le script, pour çà tu ouvres l'application "éditeur de script" qui est dans applications-->utilitaires, dans un nouveau document de cette application tu fais un copié, collé du script ci-dessous et tu enregistres ce script (provisoirement sur le bureau), avec le nom de ton choix exemple:(extrait pièce jointe)

3 - Dans les préférences de mail tu crées une nouvelle règle: avec condition : Tous les messages, les opérations: Exécuter un applescript, dans aucun script tu sélectionnes ouvrir dans le finder et dans le fenêtre qui s'ouvre tu fais un glissé déposé du script qui est sur le bureau, tu fermes cette fenêtre et tu peux alors sélectionner le script.

4 - Pour que l'impression de la pièce jointe soit automatique il faut créer une action de dossier: pour çà tu ouvres l'application "automator" nouveau document-->action de dossier --Choisir. Dans l'action qui s'affiche (choisir un dossier, tu choisis ton dossier "pieces jointes mails", sur la gauche tu sélectionnes utilitaires, imprimer les éléments du finder et tu fais un glisser déposer de cette action sur la droite. (tu laisses imprimante par défaut) et tu enregistres avec un nom de ton choix (exemple imprime fichier)

5 - dans ton dossier documents, tu fais un clic droit sur le dossier "pièces jointes mails" , dans service tu sélectionnes "configuration des actions de dossier", lancer le service, dans la fenêtre tu sélectionnes ton action "imprime fichier" et joindre, tu t'assures que les cases soient cochées y compris la case "activer les actions de dossier".

Voilà c'est fini.

Lors de le réception d'un mail, le script sera lancé, il transfère les pièces jointes des fichiers "non lue" dans le dossier qui lui envoi ce fichier à l'imprimante par défaut.

Remarque: le script ne transfère la pièce jointe qu'une seule fois (mail garde en mémoire que la pièce jointe à été tranférée !)
Je reste à ta disposition si tu as des problèmes pour la mise en place.
Bloc de code:
tell application "Mail"
    set xx to {}
    set xxref to a reference to xx
    set mailNbr to count of messages of inbox
    repeat with j from 1 to mailNbr
        if read status of (message j of inbox) = false then
            copy (message j of inbox) to end of xxref
        end if
    end repeat
   
    tell me to perform mail action with messages xxref
end tell

using terms from application "Mail"
   
    on perform mail action with messages theMessages
        -- localiser ci-dessous le répertoire cible "monRepertoireCible"
        tell application "Finder" to set PathRepertoireCible to (folder "pieces jointes mails" of (path to documents folder)) as string
        -- pour chacun des messages selectionnés, extraire la premiere piece jointe et l'enregistrer dans le répertoire "pieces jointes mails" dans le type d'origine du fichier joint
        repeat with CeMessage in theMessages
            -- extraire le nom du fichier joint
            set fichier_joint to the first mail attachment of CeMessage
            set NomPieceJointe to the name of fichier_joint
            -- composer le chemin du fichier dans son répertoire cible
            set LeNomFichier to PathRepertoireCible & NomPieceJointe
            -- remarque: le save ci-dessous ne duplique pas le fichier dans le repertoire cible si l'opération a déjà été faite
            save fichier_joint in file LeNomFichier
        end repeat
    end perform mail action with messages
   
end using terms from
 
Dernière édition:

zeltron54

Membre d’élite
29 Mars 2008
1 795
264
Lorraine
Bonjour,

Une petite modification du script. Il ne transférait qu'une pièce jointe.
Le nouveau script (qui annule et remplace le précédent) transfère toutes les pièces jointes du mail.

Bloc de code:
tell application "Mail"
    set xx to {}
    set xxref to a reference to xx
    set mailNbr to count of messages of inbox
    repeat with j from 1 to mailNbr
        if read status of (message j of inbox) = false then
            copy (message j of inbox) to end of xxref
        end if
    end repeat
   
    tell me to perform mail action with messages xxref
end tell

using terms from application "Mail"
   
    on perform mail action with messages theMessages
        -- localiser ci-dessous le répertoire cible "monRepertoireCible"
        tell application "Finder" to set PathRepertoireCible to (folder "pieces jointes mails" of (path to documents folder)) as string
        -- pour chacun des messages selectionnés, extraire la premiere piece jointe et l'enregistrer dans le répertoire "pieces jointes mails" dans le type d'origine du fichier joint
        repeat with CeMessage in theMessages
            -- extraire le nom du fichier joint
            set NBPJ to count of id of the mail attachment of CeMessage
            repeat with i from 1 to NBPJ
                set fichier_joint to item i of the mail attachment of CeMessage
                set NomPieceJointe to the name of fichier_joint
                set aa to NomPieceJointe as string
                -- composer le chemin du fichier dans son répertoire cible
                set LeNomFichier to PathRepertoireCible & NomPieceJointe
                -- remarque: le save ci-dessous ne duplique pas le fichier dans le repertoire cible si l'opération a déjà été faite
                save fichier_joint in file LeNomFichier
            end repeat
        end repeat
    end perform mail action with messages
   
end using terms from
 

baron

Membre d’élite
22 Avril 2008
1 376
332
LLN
[…] personnellement, je reçois souvent des mails avec en signature toutes sortes de bébelles que Mail considère comme pièces jointes mais que je ne voudrais pas voir imprimer aveuglément, comme le bô logo de la boîte, les zolies images des réseaux sociaux auxquels ils participent, etc.
Éventuellement, pour obvier à ce défaut, on pourrait envisager un test du genre "si la PJ est d'une taille inférieure à…" (quelque part entre 1 et 10 ko ?), alors ne pas imprimer/ne pas mettre dans le dossier "PJ_à_imprimer" et demander quoi faire/déplacer dans un autre dossier.
— Je ne sais pas trop à quelle étape, script ou action de dossier, il faudrait placer ce test.
 

zeltron54

Membre d’élite
29 Mars 2008
1 795
264
Lorraine
@baron :coucou:
Bonjour,
Effectivement on pourrait ajouter une ou des conditions pour le transfert, à mettre dans le script...
Le premier script ne transférait que la première pièce jointe, le deuxième les transfère toute...
iliasrem verra à l'usage, et pourra me transmettre ses besoins . ;)
 
  • J’aime
Réactions: baron