Поиск в почтовом ящике Mail.app с помощью Applescript

Я хочу иметь возможность искать в почтовом ящике Apple mail.app фазу или слово, а затем каким-то образом возвращать или копировать все адреса электронной почты, с которых были отправлены электронные письма, которые были успешно возвращены из результатов поиска. если вы понимаете, что я имею в виду

Я думал, что единственный способ сделать это, вероятно, это applescript, но если кто-то еще знает какой-либо другой способ, пожалуйста, скажите мне :)


person DotSlashSlash    schedule 16.12.2009    source источник


Ответы (2)


Mail.app не позволяет выполнять поиск напрямую через Applescript, но это сработает, хотя и немного медленно, потому что ему нужно перебирать каждое сообщение:

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
person Philip Regan    schedule 16.12.2009
comment
Это работает, но очень-очень медленно. Получение писем из 10-15 поисковых запросов вручную (используя поиск в Mail.app) будет быстрее, чем получение результатов этого скрипта для одного поискового запроса. Я проверил это в папке «Входящие» с 1000 сообщениями в Mac OS X 10.6.8 на Macbook Pro 2,53 ГГц. - person mpiktas; 26.09.2011
comment
Потребовалось некоторое время, чтобы выяснить, как установить theInbox, поэтому я публикую версию, которая, наконец, сработала для меня: set theInbox to mailbox "INBOX" of account "myaccount" - person mpiktas; 26.09.2011

вы также можете вызвать настоящий поиск в интерфейсе, а затем собрать предметы

    [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]];
}

вы кажетесь достаточно компетентным, чтобы завершить остальную часть кода.

person Anno2001    schedule 26.01.2013