Come si cattura l'url del messaggio mail.app che rimarrà persistente quando il messaggio viene spostato?

4

Quindi mail.app ha questo meraviglioso messaggio: // schema URL, che funziona benissimo, finché il messaggio non viene spostato . Quindi i collegamenti creati a volte funzionano e talvolta no. Non riesco a capire la differenza. Quindi la mia domanda è duplice:

  1. C'è un modo per accedere ai messaggi attraverso un URL anche quando si sono spostati?
  2. In caso contrario, come faccio a spostare un messaggio e quindi ottenere il suo ID messaggio?

Il mio script corrente è

tell application "Mail"
    set theSelectedMessages to selection
    set the selected_message to item 1 of the theSelectedMessages
    set message_id to the message id of the selected_message
    set message_subject to the subject of the selected_message
end tell
set myPrompt to display dialog "Create New To Do in BusyCal" default answer message_subject
set response to the text returned of myPrompt
set quick_entry to encode(response & " " & month of (current date) & day of (current date) & "!!!" & " <message:<" & message_id & ">>") -- see encode handler below
tell application "BusyCal"
    activate
    open location "busycalevent://new/-" & quick_entry
end tell
tell application "Mail"
    move the selected_message to mailbox "Calendar" of mailbox " To-Do" of account "Calion"
end tell
--encode handler
on encode(msg)
    set theText to do shell script "/usr/bin/python -c 'import sys, urllib; print urllib.quote(sys.argv[1])' " & quoted form of msg
    set AppleScript's text item delimiters to "/"
    set theTextItems to text items of theText
    set AppleScript's text item delimiters to "%2F"
    set theText to theTextItems as string
    set AppleScript's text item delimiters to {""}
    return theText
end encode
    
posta Calion 21.07.2015 - 19:03
fonte

1 risposta

5

Risposta breve

message: URL sono persistenti, ma la posta deve essere riavviata in modo che il suo database ID messaggio venga aggiornato e gli URL siano correttamente risolti.

Dovrai riavviare Mail prima di usare BusyCal. In alternativa, puoi riavviare Mail nel tuo script.

Risposta lunga

Dopo alcuni test ho notato che:

  • Gli ID dei messaggi non cambiano quando viene spostato un messaggio :

    L'ID messaggio di questa mail di prova che si trova nella Posta in arrivo:

    noncambiadopoaverlospostatonellacaselladiposta_People:

  • Gli ID dei messaggi funzionano dopo il riavvio della posta :

    Dopo aver spostato il messaggio, l'URL message:%3CCA+pHXZSgP12HvSg2sQ9J3ochK2K8xOTk_wEoTf+6WmMcYGYxnw@mail.gmail.com%3E mostra un messaggio vuoto perché Mail cerca il messaggio nella Posta in arrivo (premi Comando e fai clic sull'icona della busta sulla barra della finestra per mostrare il percorso del messaggio vuoto):

    DopoaverriavviatoMail,ilmessaggiovienetrovatocorrettamente:

(Testato su OS X Mavericks 10.10.4.)

Per le tue domande:

C'è un modo per accedere ai messaggi attraverso un URL anche quando si sono spostati?

Sì, riavvia Mail in modo che ricostruisca il suo database di ID messaggio interno. Sarai in grado di accedere a qualsiasi messaggio spostato nelle loro nuove caselle di posta.

Capisco che questo sia fastidioso ma sembra essere l'unica soluzione.

In caso contrario, come faccio a spostare un messaggio e poi a ottenere il suo ID messaggio?

Non è necessario in quanto gli ID dei messaggi non cambiano.

    
risposta data 10.08.2015 - 15:47
fonte

Leggi altre domande sui tag