¿Cómo capturar la url del mensaje mail.app que permanecerá persistente cuando se mueva el mensaje?

4

Así que mail.app tiene este maravilloso message: // esquema de URL, que funciona muy bien, hasta que se mueva el mensaje . Entonces los enlaces creados a veces funcionan, y otras veces no. No puedo entender la diferencia. Así que mi pregunta es doble:

  1. ¿Hay alguna forma de acceder a los mensajes a través de una URL incluso cuando se hayan mudado?
  2. Si no, ¿cómo muevo un mensaje y luego obtengo su ID de mensaje?

Mi script actual es

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
    
pregunta Calion 21.07.2015 - 19:03

1 respuesta

5

Respuesta corta

message: URLs son persistentes, pero Mail debe reiniciarse para que su base de datos de ID de mensajes se actualice y las URL se resuelvan correctamente.

Tendrá que reiniciar el correo antes de usar BusyCal. Alternativamente, puedes reiniciar Mail en tu script.

Respuesta larga

Después de algunas pruebas noté que:

  • los ID de mensaje no cambian cuando se mueve un mensaje :

    El ID de mensaje de este correo de prueba ubicado en la Bandeja de entrada:

    nocambiadespuésdemoverloalbuzón_People:

  • los ID de mensaje funcionan después de reiniciar el correo :

    Después de mover el mensaje, la URL message:%3CCA+pHXZSgP12HvSg2sQ9J3ochK2K8xOTk_wEoTf+6WmMcYGYxnw@mail.gmail.com%3E muestra un mensaje vacío porque Mail busca el mensaje en la Bandeja de entrada (presione Comando y haga clic en el icono de sobre en la barra de la ventana para mostrar la ruta al mensaje vacío):

    DespuésdereiniciarMail,elmensajeseencuentracorrectamente:

(Probado en OS X Mavericks 10.10.4.)

A tus preguntas:

¿Hay alguna forma de acceder a los mensajes a través de una URL incluso cuando se hayan mudado?

Sí, reinicie Mail para que reconstruya su base de datos de ID de mensaje interna. Podrás acceder a cualquier mensaje movido en sus nuevos buzones.

Entiendo que esto es molesto, pero parece ser la única solución.

Si no, ¿cómo muevo un mensaje y luego obtengo su ID de mensaje?

Eso no es necesario ya que las ID de los mensajes no cambian.

    
respondido por el jaume 10.08.2015 - 15:47

Lea otras preguntas en las etiquetas