4 votos

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

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

  1. ¿Existe una forma de acceder a los mensajes a través de una URL aunque se hayan movido?
  2. Si no es así, ¿cómo puedo mover un mensaje y entonces ¿obtener su ID de mensaje?

Mi actual script 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

5voto

Phill Puntos 126

Respuesta corta

message: URLs son persistente, pero es necesario reiniciar Mail para que su base de datos de ID de mensajes se actualice y las URL se resuelvan correctamente.

Tendrás que reiniciar Mail antes de utilizar BusyCal. También puede reiniciar Mail en su script.


Respuesta larga

Después de algunas pruebas me di cuenta de ello:

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

    El ID del mensaje de este correo de prueba situado en la bandeja de entrada:

    enter image description here

    no cambia después de moverlo al _People buzón:

    enter image description here

  • los ID de los mensajes funcionan después de reiniciar Mail :

    Después de trasladar 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 (pulse Comando y haga clic en el icono del sobre en la barra de la ventana para mostrar la ruta del mensaje vacío):

    enter image description here

    Después de reiniciar Mail, el mensaje se encuentra con éxito:

    enter image description here

(Probado en OS X Mavericks 10.10.4.)

A sus preguntas:

¿Existe una forma de acceder a los mensajes a través de una URL aunque se hayan movido?

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

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

Si no es así, ¿cómo puedo mover un mensaje y luego obtener su ID de mensaje?

No es necesario, ya que los ID de los mensajes no cambian.

0 votos

¡AH! Eso explica por qué unas veces funcionan y otras no. Así que parece que no serviría de nada moverlo y obtener el ID, porque Mail no habrá actualizado la base de datos. Puedo probarlo.

0 votos

Me pregunto si hay una manera de forzar la actualización de la base de datos sin reiniciar el programa. En cualquier caso, has respondido a mi pregunta. Muchas gracias.

0 votos

También me pregunto si al ver el mensaje en su nuevo buzón se actualiza la BD. Apuesto a que sí. ¡Más pruebas!

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X