2009-12-16 4 views
1

Je veux être en mesure de rechercher une phase ou un mot dans une boîte aux lettres dans apple.app de apple, puis de renvoyer ou de copier d'une manière ou d'une autre toutes les adresses électroniques à partir desquelles les emails sont retournés le résultat de la recherche ont été envoyés à partir .. si vous obtenez ce que je veux direRechercher Mailbox de Mail.app avec Applescript

Je pensais que la seule façon de le faire est probablement AppleScript mais si quelqu'un sait d'autre d'une autre manière s'il vous plaît me dire :)

Répondre

3

Mail.app n'autorise pas les recherches directement via Applescript mais cela fera l'affaire, même si c'est un peu lent car il doit parcourir chaque message:

global searchTerm 
property emailList : {} 

set searchTerm to "aSearchTerm" 

tell application "Mail" 

    set theInbox to inbox 

    set firstMessage to 1 
    set lastMessage to (get count of messages in theInbox) 

    repeat with thisMessage from firstMessage to lastMessage 
     set currentMessage to message thisMessage of theInbox 

     set messageContent to content of currentMessage 

     if messageContent contains searchTerm then 
      set end of emailList to sender of currentMessage 
     end if 

    end repeat 

end tell 

return emailList 
+0

Cela fonctionne, mais c'est très très lent. Obtenir des courriels de 10 à 15 termes de recherche manuellement (en utilisant la recherche dans Mail.app) sera plus rapide que d'obtenir les résultats de ce script pour un terme de recherche. J'ai testé cela sur une boîte de réception avec 1000 messages sur Mac OS X 10.6.8 sur Macbook Pro 2.53 Ghz. – mpiktas

+0

Il a fallu un certain temps pour comprendre comment configurer 'theInbox' de sorte que je poste la version qui a finalement fonctionné pour moi:' set theInbox à la boîte aux lettres "INBOX" du compte "myaccount" ' – mpiktas

0

vous pouvez aussi invoquer une réelle recherche dans l'interface, puis recueillir les éléments

[Applications launch:@"Mail"]; 
    [Keyboard command_alt_press:'f']; 
    [Keyboard paste:term]; 


+(void) command_alt_press:(char)c{ 
    [self runScript:[NSString stringWithFormat:@"tell application \"System Events\" to keystroke \"%c\" using command option down",c]]; 
} 

vous semblent assez compétents pour compléter le reste du code.