Automatiser envoi mail journalier

zeltron54

Membre d’élite
29 Mars 2008
2 138
335
Lorraine
Ok content pour toi !

Edit: J'y pense , j'espère que tu as pensé à renseigner le "sujet", dans le script il inscrit "sujet" c'est pas très original ... ;)
 
Dernière édition:

zeltron54

Membre d’élite
29 Mars 2008
2 138
335
Lorraine
Ok
Je reste à dispo si besoin !
Bye :coucou:
 

digisi

Membre junior
26 Avril 2020
39
0
33
Ok
Je reste à dispo si besoin !
Bye :coucou:
Re,
Suite a l'envoi de ce matin, voila un premier retour.
Le script se lance très bien automatiquement avec le calendrier, en revanche petit bémol que je constate c'est que le fait d'envoyer en même temps les 50 mails encombre la boite d'envoi. Pour tout te dire il me reste encore 20 mails en cours d'envoi sur 50 alors que j'ai programmé l'envoi pour 9h30 ce matin.
Une idée pour y remédier ? J'avais pensé a un petit délai entre les envois ?
Qu'en penses tu ?
 

zeltron54

Membre d’élite
29 Mars 2008
2 138
335
Lorraine
Tu peux effectivement mettre un délai entre chaque envoi, je ne suis pas convaincu que cela empêche le problème, mais rien n'empêche d'essayer. Les mails sont envoyés quand même ? . y a t'il des pièces jointes ou juste ton texte?
Pour mettre un délai il faut ajouter une ligne, juste après les lignes" Send newmessage" et "set nbmessage to nbmessage + 1 --compte le nombre de message envoyé" , tu ajoutes : "delay x" (x en secondes)
 

digisi

Membre junior
26 Avril 2020
39
0
33
Tu peux effectivement mettre un délai entre chaque envoi, je ne suis pas convaincu que cela empêche le problème, mais rien n'empêche d'essayer. Les mails sont envoyés quand même ? . y a t'il des pièces jointes ou juste ton texte?
Pour mettre un délai il faut ajouter une ligne, juste après les lignes" Send newmessage" et "set nbmessage to nbmessage + 1 --compte le nombre de message envoyé" , tu ajoutes : "delay x" (x en secondes)
Oki top, non pas de pièce jointe uniquement du texte.
Mais sinon les mails sont envoyés sans aucun soucis.
 

zeltron54

Membre d’élite
29 Mars 2008
2 138
335
Lorraine
Donc un délai ne servira à rien, sinon que au lieu que ce soit l'appli mail qui attende, ce sera le script qui attendra !...
 

digisi

Membre junior
26 Avril 2020
39
0
33
Donc un délai ne servira à rien, sinon que au lieu que ce soit l'appli mail qui attende, ce sera le script qui attendra !...
Hello, petite remontée, le script porte ses fruits. En revanche petite problématique au niveau de Mail Mac au bout d'un moment les envois se stoppent et reste dans la boite d'envoi. Penses tu qu'il y a une solution à cette problématique ?
Bonne journée,
 

zeltron54

Membre d’élite
29 Mars 2008
2 138
335
Lorraine
Bonjour,

Lorsque mail bloque, il y a combien de mails dans la boite d'envoi ?

Je vois 3 possibilités (à tester !)
1 - Programmer l'envoi des mails par plus petits paquets (par exemple 5 vagues de 10 mails) chaque vagues espacée de xx minutes xx en fonction de la vitesse d'envoi de mail (dépend de la machine et de la connexion) là faut faire des essais pour déterminer la bonne cadence.

2 - Dans le programme mettre un délai entre chaque envoi de mail (idem délai à déterminer en fonction de la vitesse d'envoi).

3- Dans le programme, attendre avant d' envoyer le mail suivant que la boite d'envoi soit vide (cette solution va allonger le temps des envois). En effet le test de vérification du contenu de la boite d'envoi va tourner en boucle et ralentir l'exécution.

Je n'ai testé aucune de ces solutions ! (d'autant que je n'utilise pas mail, mais outlook)
 

digisi

Membre junior
26 Avril 2020
39
0
33
Bonjour,

Lorsque mail bloque, il y a combien de mails dans la boite d'envoi ?

Je vois 3 possibilités (à tester !)
1 - Programmer l'envoi des mails par plus petits paquets (par exemple 5 vagues de 10 mails) chaque vagues espacée de xx minutes xx en fonction de la vitesse d'envoi de mail (dépend de la machine et de la connexion) là faut faire des essais pour déterminer la bonne cadence.

2 - Dans le programme mettre un délai entre chaque envoi de mail (idem délai à déterminer en fonction de la vitesse d'envoi).

3- Dans le programme, attendre avant d' envoyer le mail suivant que la boite d'envoi soit vide (cette solution va allonger le temps des envois). En effet le test de vérification du contenu de la boite d'envoi va tourner en boucle et ralentir l'exécution.

Je n'ai testé aucune de ces solutions ! (d'autant que je n'utilise pas mail, mais outlook)

Hello,

Désolé pas pu revenir vers toi plus tôt. J'ai conservé le script initial qui est très bien, je gagne déjà pas mal de temps.
Concernant la boite d'envoi, je fais un rafraichissement pour relancer les mails bloqués.
Question, j'ai un document pdf a ajouter au mail est ce que c'est possible stp ?
Merci d'avance pour ton retour.

Bonne journée,
 

zeltron54

Membre d’élite
29 Mars 2008
2 138
335
Lorraine
Bonjour,

Normalement pas de problème pour joindre 1 ou plusieurs pièces jointes.

Il suffit de l'ajouter avant l'envoi.
Je te joins l' ajout à faire dans le bloc "tell newMessage", j'ai mis dans l'exemple pour 2 pièces jointes.
Il faudra adapter les adresses de ces documents !
Dans le code j'ai englobé une partie du code existant.

Merci d'avance pour ton retour...

Bloc de code:
tell newMessage
                    set toaddresslist to {lemail} -- prépare l'adressed'envoi
                    make new to recipient at end of to recipients with properties {address:toaddresslist} -- envoi le mail
                   
                    --Ajout pièces jointes
                    set PieceJointe_list to {"Macintosh HD:Users:Nom_utilisateur:desktop:mapiecejointe 1.pdf"} & {"Macintosh HD:Users:Nom_utilisateur:desktop:mapiecejointe 1.pdf"}
                    repeat with nbpj from 1 to count PieceJointe_list
                        set mapj to item nbpj of PieceJointe_list as alias
                        tell content of newMessage to make new attachment with properties {file name:mapj} at after last paragraph
                    end repeat
                    --Fin de l'ajout
                   
                end tell
               
                send newMessage
                set nbmessage to nbmessage + 1 --compte le nombre de message envoyé
            end tell
 

digisi

Membre junior
26 Avril 2020
39
0
33
Bonjour,

Normalement pas de problème pour joindre 1 ou plusieurs pièces jointes.

Il suffit de l'ajouter avant l'envoi.
Je te joins l' ajout à faire dans le bloc "tell newMessage", j'ai mis dans l'exemple pour 2 pièces jointes.
Il faudra adapter les adresses de ces documents !
Dans le code j'ai englobé une partie du code existant.

Merci d'avance pour ton retour...

Bloc de code:
tell newMessage
                    set toaddresslist to {lemail} -- prépare l'adressed'envoi
                    make new to recipient at end of to recipients with properties {address:toaddresslist} -- envoi le mail
                  
                    --Ajout pièces jointes
                    set PieceJointe_list to {"Macintosh HD:Users:Nom_utilisateur:desktop:mapiecejointe 1.pdf"} & {"Macintosh HD:Users:Nom_utilisateur:desktop:mapiecejointe 1.pdf"}
                    repeat with nbpj from 1 to count PieceJointe_list
                        set mapj to item nbpj of PieceJointe_list as alias
                        tell content of newMessage to make new attachment with properties {file name:mapj} at after last paragraph
                    end repeat
                    --Fin de l'ajout
                  
                end tell
              
                send newMessage
                set nbmessage to nbmessage + 1 --compte le nombre de message envoyé
            end tell
Hello,

J'espère que tu vas bien, merci pour ton retour, je viens de tester avec le code mais j'ai le message d'erreur ci-dessous.
Apparemment c'est par rapport à l'alias comme tu peux le voir.
Aurais-tu une solution à cette problématique stp ?
Merci d'avance pour ta réponse

Bonne soirée,

Bloc de code:
tell application "Finder"


    set chemin to ((path to home folder) & "documents:script mail:liste.numbers") as string


    open chemin


    activate


    delay 3


end tell





tell application "Numbers"


    tell table 1 of sheet 1 of document "liste.numbers" -- voir document numbers


        set CR to (ASCII character 13) -- initialise un retour ligne


        set blabla to value of cell "B1" -- récupère le texte de la cellule E1


        set leslignes to 2 -- initialise le numéro de la première ligne des clients


        set nbmessage to 0


        


        


        repeat


            if nbmessage = 50 then exit repeat -- stop si 50 messages


            repeat


                set celtest to "B" & leslignes as string


                set letest to value of cell celtest -- controle si mail déja envoyé


                if letest = "X" then


                    set leslignes to leslignes + 1


                else


                    exit repeat


                end if


            end repeat


            


            set celmail to "A" & leslignes as string


            


            


            set lemail to value of cell celmail as string -- recupère le nom


            if lemail = "missing value" then -- vérifie si la derniere ligne


                exit repeat


            end if


            


            


            tell application "Mail"


                set contenu to "Bonjour, " & CR & CR & blabla -- prépare le contenu du mail


                


                set newMessage to make new outgoing message with properties {subject:"test", content:contenu} -- prépare le mail


                


                


                tell newMessage


                    set toaddresslist to {lemail} -- prépare l'adressed'envoi


                    make new to recipient at end of to recipients with properties {address:toaddresslist} -- envoi le mail


                    


                    --Ajout pièces jointes


                    set PieceJointe_list to {"documents:script mail:presentation.pdf"}


                    repeat with nbpj from 1 to count PieceJointe_list


                        set mapj to item nbpj of PieceJointe_list as alias


                        tell content of newMessage to make new attachment with properties {file name:mapj} at after last paragraph


                    end repeat


                    --Fin de l'ajout


                    


                end tell


                


                send newMessage


                set nbmessage to nbmessage + 1 --compte le nombre de message envoyé


            end tell


            tell application "Numbers"


                tell table 1 of sheet 1 of document "liste.numbers"


                    set value of cell celtest to "X" -- renseigne numbers mail envoyé


                end tell


            end tell


            set leslignes to leslignes + 1 -- prépare numéro ligne suivante


        end repeat


    end tell


    save front document


    quit


end tell
 

Fichiers joints

  • Capture d’écran 2020-06-11 à 18.03.34.png
    Capture d’écran 2020-06-11 à 18.03.34.png
    382 KB · Affichages: 52

zeltron54

Membre d’élite
29 Mars 2008
2 138
335
Lorraine
Bonjour,

Le message signale qu'il ne trouve pas le fichier à cette adresse.

Il faut le chemin complet du fichier du genre:
Bloc de code:
{"Macintosh HD:Users:Nom_utilisateur:documents:script mail:presentation.pdf"}

en remplacant: Macintosh HD par le nom de ton disque dur et Nom_utilisateur par le tiens.

tu peux aussi définir le chemin de la P.J. dans une variable.

Bloc de code:
 --Ajout pièces jointes
                   set cheminPJ to ((path to home folder) & "documents:script mail:presentation.pdf")
                    set PieceJointe_list to {cheminPJ}
                    repeat with nbpj from 1 to count PieceJointe_list
                        set mapj to item nbpj of PieceJointe_list as alias
                        tell content of newMessage to make new attachment with properties {file name:mapj} at after last paragraph
                    end repeat
                    --Fin de l'ajout
 

digisi

Membre junior
26 Avril 2020
39
0
33
Bonjour,

Le message signale qu'il ne trouve pas le fichier à cette adresse.

Il faut le chemin complet du fichier du genre:
Bloc de code:
{"Macintosh HD:Users:Nom_utilisateur:documents:script mail:presentation.pdf"}

en remplacant: Macintosh HD par le nom de ton disque dur et Nom_utilisateur par le tiens.

tu peux aussi définir le chemin de la P.J. dans une variable.

Bloc de code:
 --Ajout pièces jointes
                   set cheminPJ to ((path to home folder) & "documents:script mail:presentation.pdf")
                    set PieceJointe_list to {cheminPJ}
                    repeat with nbpj from 1 to count PieceJointe_list
                        set mapj to item nbpj of PieceJointe_list as alias
                        tell content of newMessage to make new attachment with properties {file name:mapj} at after last paragraph
                    end repeat
                    --Fin de l'ajout
Merci j'ai effectué la modification, donc le mail par correctement mais il n'y a pas la PJ.
Et bizarrement pas de message d'erreur.
 

zeltron54

Membre d’élite
29 Mars 2008
2 138
335
Lorraine
Le chemin n'est pas bon avec le nouveau script il faut le prendre dans un bloc tell finder! (erreur de ma part!)
Essai avec ce bloc!
Bloc de code:
--Ajout pièces jointes
            tell application "Finder"
                set cheminPJ to ((path to home folder) & "documents:script mail:presentation.pdf") as string
            end tell
            set PieceJointe_list to {cheminPJ}
            repeat with nbpj from 1 to count PieceJointe_list
               
                set mapj to item nbpj of PieceJointe_list as alias
                tell content of newMessage to make new attachment with properties {file name:mapj} at after last paragraph
            end repeat
            --Fin de l'ajout

Dis moi si c'est bon !
 

digisi

Membre junior
26 Avril 2020
39
0
33
Le chemin n'est pas bon avec le nouveau script il faut le prendre dans un bloc tell finder! (erreur de ma part!)
Essai avec ce bloc!
Bloc de code:
--Ajout pièces jointes
            tell application "Finder"
                set cheminPJ to ((path to home folder) & "documents:script mail:presentation.pdf") as string
            end tell
            set PieceJointe_list to {cheminPJ}
            repeat with nbpj from 1 to count PieceJointe_list
             
                set mapj to item nbpj of PieceJointe_list as alias
                tell content of newMessage to make new attachment with properties {file name:mapj} at after last paragraph
            end repeat
            --Fin de l'ajout

Dis moi si c'est bon !
Hello, toujours le même problème. Dans le mail il n'y a pas la PJ et aucun message d'erreur.
 

zeltron54

Membre d’élite
29 Mars 2008
2 138
335
Lorraine
Chez moi je viens de tester, ça fonctionne ! ?
ton fichier s'appelle bien "presentation.pdf" et il est bien au même endroit que ton fichier numbers ?

met ton code complet , que je puisse analyser ...?
 

digisi

Membre junior
26 Avril 2020
39
0
33
Chez moi je viens de tester, ça fonctionne ! ?
ton fichier s'appelle bien "presentation.pdf" et il est bien au même endroit que ton fichier numbers ?

met ton code complet , que je puisse analyser ...?
Voila le code :
Bloc de code:
tell application "Finder"


    set chemin to ((path to home folder) & "documents:script mail:liste.numbers") as string


    open chemin


    activate


    delay 3


end tell





tell application "Numbers"


    tell table 1 of sheet 1 of document "liste.numbers" -- voir document numbers


        set CR to (ASCII character 13) -- initialise un retour ligne


        set blabla to value of cell "B1" -- récupère le texte de la cellule E1


        set leslignes to 2 -- initialise le numéro de la première ligne des clients


        set nbmessage to 0


        


        


        repeat


            if nbmessage = 50 then exit repeat -- stop si 50 messages


            repeat


                set celtest to "B" & leslignes as string


                set letest to value of cell celtest -- controle si mail déja envoyé


                if letest = "X" then


                    set leslignes to leslignes + 1


                else


                    exit repeat


                end if


            end repeat


            


            set celmail to "A" & leslignes as string


            


            


            set lemail to value of cell celmail as string -- recupère le nom


            if lemail = "missing value" then -- vérifie si la derniere ligne


                exit repeat


            end if


            


            


            tell application "Mail"


                set contenu to "Bonjour, " & CR & CR & blabla -- prépare le contenu du mail


                


                set newMessage to make new outgoing message with properties {subject:"test", content:contenu} -- prépare le mail


                


                


                tell newMessage


                    set toaddresslist to {lemail} -- prépare l'adressed'envoi


                    make new to recipient at end of to recipients with properties {address:toaddresslist} -- envoi le mail


                    


                    --Ajout pièces jointes


                    tell application "Finder"


                        set cheminPJ to ((path to home folder) & "documents:script mail:presentation.pdf") as string


                    end tell


                    set PieceJointe_list to {cheminPJ}


                    repeat with nbpj from 1 to count PieceJointe_list


                        


                        set mapj to item nbpj of PieceJointe_list as alias


                        tell content of newMessage to make new attachment with properties {file name:mapj} at after last paragraph


                    end repeat


                    --Fin de l'ajout


                    


                end tell


                


                send newMessage


                set nbmessage to nbmessage + 1 --compte le nombre de message envoyé


            end tell


            tell application "Numbers"


                tell table 1 of sheet 1 of document "liste.numbers"


                    set value of cell celtest to "X" -- renseigne numbers mail envoyé


                end tell


            end tell


            set leslignes to leslignes + 1 -- prépare numéro ligne suivante


        end repeat


    end tell


    save front document


    quit


end tell
 

zeltron54

Membre d’élite
29 Mars 2008
2 138
335
Lorraine
Je te remets le script a moi complet, qui fonctionne chez moi.

Ton script ci-dessus fonctionne également chez moi (non compris la gestion de plusieurs feuilles)

Bloc de code:
tell application "Finder"
    set chemin to ((path to home folder) & "documents:script mail:liste.numbers") as string
    open chemin
    activate
    delay 3
end tell

tell application "Numbers"
    set lafeuille to 1
    set CR to (ASCII character 13) -- initialise un retour ligne
    set nbmessage to 0
    set leslignes to 2 -- initialise le numéro de la première ligne des clients
    set lasuite to 1
    repeat
        tell table 1 of sheet lafeuille of document "liste.numbers" -- voir document numbers
            set blabla to value of cell "B1" -- récupère le texte de la cellule E1
            set leslignes to 2 -- initialise le numéro de la première ligne des clients
        end tell
        
        
        if nbmessage = 50 then exit repeat -- stop si 50 messages
        
        tell table 1 of sheet lasuite of document "liste.numbers" -- voir document numbers
            
            repeat
                set celtest to "B" & leslignes as string
                set letest to value of cell celtest -- controle si mail déja envoyé
                if letest = "X" then
                    set leslignes to leslignes + 1
                else
                    exit repeat
                end if
            end repeat
            
            set celmail to "A" & leslignes as string
            set celsuite to "A" & (leslignes + 1) as string
            set suite to value of cell celsuite
            
            set lemail to value of cell celmail as string -- recupère le nom
            if lemail = "missing value" then -- vérifie si la derniere ligne
                exit repeat
            end if
        end tell
        
        tell application "Mail"
            set contenu to "Bonjour, " & CR & CR & blabla -- prépare le contenu du mail
            
            set newMessage to make new outgoing message with properties {subject:"test", content:contenu} -- prépare le mail
            
            
            tell newMessage
                set toaddresslist to {lemail} -- prépare l'adressed'envoi
                make new to recipient at end of to recipients with properties {address:toaddresslist} -- envoi le mail
                
                --Ajout pièces jointes
                tell application "Finder"
                    set cheminPJ to ((path to home folder) & "documents:script mail:presentation.pdf") as string
                end tell
                set PieceJointe_list to {cheminPJ}
                repeat with nbpj from 1 to count PieceJointe_list
                    
                    set mapj to item nbpj of PieceJointe_list as alias
                    tell content of newMessage to make new attachment with properties {file name:mapj} at after last paragraph
                end repeat
                
            end tell
            
            send newMessage
            set nbmessage to nbmessage + 1 --compte le nombre de message envoyé
        end tell
        tell application "Numbers"
            tell table 1 of sheet lasuite of document "liste.numbers"
                set value of cell celtest to "X" -- renseigne numbers mail envoyé
                
                if suite = "fin" then
                    set lasuite to lasuite + 1
                    set leslignes to 1
                end if
                
            end tell
        end tell
        set leslignes to leslignes + 1 -- prépare numéro ligne suivante
    end repeat
    
    save front document
    quit
end tell
 

digisi

Membre junior
26 Avril 2020
39
0
33
Je te remets le script a moi complet, qui fonctionne chez moi.

Ton script ci-dessus fonctionne également chez moi (non compris la gestion de plusieurs feuilles)

Bloc de code:
tell application "Finder"
    set chemin to ((path to home folder) & "documents:script mail:liste.numbers") as string
    open chemin
    activate
    delay 3
end tell

tell application "Numbers"
    set lafeuille to 1
    set CR to (ASCII character 13) -- initialise un retour ligne
    set nbmessage to 0
    set leslignes to 2 -- initialise le numéro de la première ligne des clients
    set lasuite to 1
    repeat
        tell table 1 of sheet lafeuille of document "liste.numbers" -- voir document numbers
            set blabla to value of cell "B1" -- récupère le texte de la cellule E1
            set leslignes to 2 -- initialise le numéro de la première ligne des clients
        end tell
       
       
        if nbmessage = 50 then exit repeat -- stop si 50 messages
       
        tell table 1 of sheet lasuite of document "liste.numbers" -- voir document numbers
           
            repeat
                set celtest to "B" & leslignes as string
                set letest to value of cell celtest -- controle si mail déja envoyé
                if letest = "X" then
                    set leslignes to leslignes + 1
                else
                    exit repeat
                end if
            end repeat
           
            set celmail to "A" & leslignes as string
            set celsuite to "A" & (leslignes + 1) as string
            set suite to value of cell celsuite
           
            set lemail to value of cell celmail as string -- recupère le nom
            if lemail = "missing value" then -- vérifie si la derniere ligne
                exit repeat
            end if
        end tell
       
        tell application "Mail"
            set contenu to "Bonjour, " & CR & CR & blabla -- prépare le contenu du mail
           
            set newMessage to make new outgoing message with properties {subject:"test", content:contenu} -- prépare le mail
           
           
            tell newMessage
                set toaddresslist to {lemail} -- prépare l'adressed'envoi
                make new to recipient at end of to recipients with properties {address:toaddresslist} -- envoi le mail
               
                --Ajout pièces jointes
                tell application "Finder"
                    set cheminPJ to ((path to home folder) & "documents:script mail:presentation.pdf") as string
                end tell
                set PieceJointe_list to {cheminPJ}
                repeat with nbpj from 1 to count PieceJointe_list
                   
                    set mapj to item nbpj of PieceJointe_list as alias
                    tell content of newMessage to make new attachment with properties {file name:mapj} at after last paragraph
                end repeat
               
            end tell
           
            send newMessage
            set nbmessage to nbmessage + 1 --compte le nombre de message envoyé
        end tell
        tell application "Numbers"
            tell table 1 of sheet lasuite of document "liste.numbers"
                set value of cell celtest to "X" -- renseigne numbers mail envoyé
               
                if suite = "fin" then
                    set lasuite to lasuite + 1
                    set leslignes to 1
                end if
               
            end tell
        end tell
        set leslignes to leslignes + 1 -- prépare numéro ligne suivante
    end repeat
   
    save front document
    quit
end tell
je viens d'essayer avec ton script et même soucis la PJ n'est pas prise en compte.