Comment extraire toutes les adresses mails contenues dans tous les mails de "Mail" sur Mac?

Le nom du sujet résume bien la question : Comment extraire toutes les adresses mails contenues dans tous les mails de « Mail » sur Mac? Quand je dis mails, je parle des mails qui ont reçu le mail et envoyé le mail, mais aussi ceux en copie.
J’ai eu beau chercher sur Internet, aucune réponse n’a fonctionné… Mais si quelqu’un a la solution pour récupérer un joli excel avec toutes les adresses je suis preneur =)

Merci!

J’utilise ce ScriptApple à copier coller dans l’éditeur de script mac : changer l’adresse ("@lenomdedomaine") sur laquelle effectuer l’extraction et le chemin
Seule limitation c’est nom de domaine, par nom de domaine !!


set outputList to {}

set phrase to « @lenomdedomaine.com » --changer lenomdedomaine

set saveFilePath to « /Users/votrenom/Desktop/tab-del file.txt » --changer votrenom

–drill down to message level and test for phrase

tell application « Mail »

set myAccounts to every account

repeat with thisAccount in myAccounts
    
    tell thisAccount
        
        set myMailboxes to every mailbox
        
        repeat with thisMailbox in myMailboxes
            
            tell thisMailbox
                
                set myMesssages to every message
                
                repeat with thisMessage in myMesssages
                    
                    set messageDataList to {}
                    
                    tell thisMessage
                        
                        set senderAddress to extract address from sender
                        
                        if senderAddress ends with phrase then
                            
                            -- check sender
                            
                            set end of outputList to (my tabFormatString(thisMessage))
                            
                        else
                            
                            set recipientAddresses to (recipients's address)
                            
                            repeat with thisaddress in recipientAddresses
                                
                                -- check each recipient
                                
                                if thisaddress ends with phrase then
                                    
                                    set end of outputList to (my tabFormatString(thisMessage))
                                    
                                    exit repeat
                                    
                                end if
                                
                            end repeat
                            
                        end if
                        
                    end tell
                    
                end repeat
                
            end tell
            
        end repeat
        
    end tell
    
end repeat

end tell

set fp to open for access saveFilePath with write permission

write tid({input:outputList, delim:return}) to fp

close access fp

on tabFormatString(aMessage)

--build a tab delimited string from the relevant data

tell application "Mail"
    
    tell aMessage
        
        set messageFrom to sender
        
        set messageToNameList to to recipients's name
        
        set messageToAddressList to to recipients's address
        
        set messageCCNameList to cc recipients's name
        
        set messageCCAddressList to cc recipients's address
        
        set messageBCCNameList to bcc recipients's name
        
        set messageBCCAddressList to bcc recipients's address
        
        set messageDate to (date received) as rich text
        
        set messageSubject to subject
        
    end tell
    
end tell



set txt to {messageFrom}

set end of txt to mungeParallelLists(messageToNameList, messageToAddressList)

set end of txt to mungeParallelLists(messageCCNameList, messageCCAddressList)

set end of txt to mungeParallelLists(messageBCCNameList, messageBCCAddressList)

set end of txt to messageDate

set end of txt to messageSubject



return tid({input:txt, delim:tab})

end tabFormatString

on mungeParallelLists(list1, list2)

-- utility to turn lists like {{name1, name2,…},{address1, address2, …}}

-- into "name1 <address1>, name2 <address2> ...

set tempList to {}

repeat with i from 1 to count of list1
    
    set end of tempList to ((item i of list1 & " <" & item i of list2 & ">") as text)
    
end repeat

return tid({input:tempList, delim:", "})

end mungeParallelLists

on tid({input:input, delim:delim})

-- handler for text items



set {oldTID, my text item delimiters} to {my text item delimiters, delim}

if class of input is list then
    
    set output to input as text
    
else
    
    set output to text items of input
    
end if

set my text item delimiters to oldTID

return output

end tid

Hello Chri,

Merci pour cette réponse rapide!
Je ne comprends malheureusement pas ce que tu veux dire, j’ai eu beau copié le code dans l’éditeur de script, j’ai toujours des problèmes qui font que le scrip ne fonctionne pas. Quand tu dis qu’il faut changer le nom de domaine, tu veux dire mettre @essca.eu (mon adresse utilisée dans mail est [email protected]), c’est bien ça?
Si tu pouvais faire une petite explication en français ça serait génial car je ne maitrise pas très bien la chose.
Merci d’avance :slightly_smiling:

Encore une fois c’est limité, mais si tu mets @gmail.com, @yahoo.com, le fichier sera important.

Step 1 : Tu copies/colles le code dans l’éditeur de script MAC
Step 2 : tu changes @nomdedomaine.com par exemple par @gmail.com ou @yahoo.fr
Step 3 : puis tu remplaces le monnomdutilisateur du chemin par celui de ton profil utilisateur
set saveFilePath to « /Users/monnomdutilisateur/Desktop/tab-del-file-new.txt »

Est-ce plus compréhensible ?

Merci, c’est parfait Chri, je tente ça tout de suite! <3

Malheureusement, ça ne semble pas fonctionné. Je change bien le nomdedomaine par essca.eu et le nom d’utilisateur,
mais j’obtiens ce message d’erreur :

item 9 of {«class mbxp» « Boxer/Done » of «class mact» « Exchange » of application « Mail », «class mbxp» « Boxer/To-do » of «class mact» « Exchange » of application « Mail », «class mbxp» « Boxer » of «class mact» « Exchange » of application « Mail », «class mbxp» « Conversation Action Settings » of «class mact» « Exchange » of application « Mail », «class mbxp» « Courrier pêle-mêle » of «class mact» « Exchange » of application « Mail », «class mbxp» « Journal » of «class mact» « Exchange » of application « Mail », «class mbxp» « Archive » of «class mact» « Exchange » of application « Mail », «class mbxp» « Tâches » of «class mact» « Exchange » of application « Mail », «class mbxp» « Notes » of «class mact» « Exchange » of application « Mail », «class mbxp» « Boîte de réception » of «class mact» « Exchange » of application « Mail », «class mbxp» « Boîte d’envoi » of «class mact» « Exchange » of application « Mail », «class mbxp» « Brouillons » of «class mact» « Exchange » of application « Mail », «class mbxp» « Éléments envoyés » of «class mact» « Exchange » of application « Mail », «class mbxp» « Éléments supprimés » of «class mact» « Exchange » of application « Mail », «class mbxp» « Junk E-Mail » of «class mact» « Exchange » of application « Mail »} ne comprend pas le message « count ».

As-tu une idée de ce que ça pourrait être? C’est peut-être le essca.eu qui passe pas?

Pourtant ça marche !!

Step by Step…

Step 1 : Tu copies/colles tout le code dans l’éditeur de script MAC
de //set outputList to {} à //end tid

Step 2 : tu changes @nomdedomaine.com ==> par @gmail.com (pas @essca.eu)

Step 3 : puis tu remplaces le monnomdutilisateur du chemin par celui de ton profil utilisateur
set saveFilePath to « /Users/monnomdutilisateur/Desktop/tab-del-file-new.txt »

par exemple set saveFilePath to « /Users/ArnaudLafosse/Desktop/tab-del-file-new.txt »