1 votes

Problèmes avec AppleScript scripting Mail

J'ai quelques problèmes. En les cherchant sur Google, j'ai trouvé ceci :

https://discussions.apple.com/thread/8022877

J'ai des problèmes presque identiques.

tell application "Mail" to make new account ...

...semble réussir du point de vue de l'éditeur script ou script - si j'interroge Mail avec :

get every imap account

le nouveau compte y est renvoyé - cependant, il n'apparaît pas dans les préférences de Mail sous l'onglet Comptes, il n'apparaît pas dans Comptes Internet, et si je redémarre mon Mac et interroge à nouveau Mail pour chaque compte imap, il n'est plus renvoyé.

--

L'autre problème que je rencontre (étroitement lié) : Je suis capable de modifier certaines des propriétés d'un compte, mais j'ai des problèmes avec deux d'entre elles. (pour ces extraits de code, le compteAccount a été défini comme un compte imap valide dans Mail) :

1 propriété activée

tell theAccount to set enabled to true

o

get enabled of theAccount

...me donne l'erreur "Apple event failed". Si je remplace "enabled" par n'importe quelle autre propriété lisible du compte imap (par exemple, le nom, le nom d'utilisateur, le port, l'utilisation de ssl, etc.), il renvoie la valeur appropriée. Mais tout ce que j'essaie de faire avec cette propriété (la récupérer ou la définir) me donne cette erreur. Huh... ?? Pourquoi celle-là et seulement celle-là ?

2 propriété d'authentification :

tell theAccount to set authenticaion to password

...donne "Can't make password of account [...] into type constant". Cette valeur ( mot de passe ) est l'une des nombreuses constantes du dictionnaire de l'énumération Authentication. Je suis sûr que la syntaxe est correcte (en principe), car si je substitue mot de passe dans le code ci-dessus avec l'une des autres constantes de cette énumération ( kerberos 5 , md5 , aucun etc.), cela fonctionne bien. Seulement mot de passe donne cette erreur.

scriptL'éditeur/AppleScript semble croire que je fais référence au mot de passe. propriété du compte, et cela a du sens, donc la question est de savoir comment utiliser cela mot de passe constante d'énumération ? Comment puis-je dire à Mail que je veux définir la propriété d'authentification de theAccount comme suit mot de passe constante d'énumération (et non la propriété du mot de passe) ?

Quelqu'un a-t-il une idée de ce que je fais mal (ou de ce que Apple fait mal ?) ?

Merci d'avance !


MISE À JOUR le jour suivant :

Rétrospectivement, j'aurais dû poser deux questions distinctes.

La réponse de @CJK résout la seconde. Sa réponse suggère également une réponse à ma première question (c'est juste un bug d'Apple), bien que d'autres puissent encore avoir des idées à ce sujet.

Je vais marquer la réponse de @CJK comme correcte sur ce post, mais si quelqu'un d'autre a des réponses à la première question, veuillez commenter. Je posterai cette question dans un post séparé, vous pourrez alors y répondre et je marquerai cette réponse comme correcte dans ce post.

2voto

OnePablo Points 1

Il s'agit davantage d'un commentaire étendu que d'une réponse, mais les commentaires ne peuvent contenir que du code en ligne et non des blocs de code clôturés.

Je ne suis pas en mesure d'offrir un aperçu de votre premier problème, car je n'utilise pas Apple Mail pour le moment, mais il s'agit probablement d'un bogue, car je suis conscient que d'autres utilisateurs ont signalé ce problème. set the enabled of every account to false ne fonctionne pas, et cela semble pertinent pour votre situation. Le deuxième problème est très probablement un bogue également, mais il est possible de le contourner, étant donné que les autres constantes d'énumération que vous avez énumérées fonctionnent toujours.

Pour illustrer un cas de test, vous pouvez essayer d'exécuter cette ligne de code :

return "axmd" as constant

et vous devriez récupérer le md5 constante utilisée par Courrier . Il n'est pas nécessaire que ce soit à l'intérieur d'un tell app "Mail" mais il peut être et peut avoir plus de sens de le placer à l'intérieur d'un dans votre script final lorsque vous utilisez le code d'énumération des mots de passe. Le code d'énumération pour password est "axct", et, espérons-le, lorsque vous exécutez cette ligne de code (de test) :

return "axct" as constant

vous récupérerez le password constant. La meilleure façon de l'utiliser dans votre script est probablement de faire quelque chose comme ceci :

tell application id "com.apple.mail"
    set axct to "axct" as constant
                .
                .
    # Other bits of your code including where
    # you define "theAccount", which should be
    # variable containing a reference to an
    # object with class 'account'
                .
                .
    set the authentication of theAccount to axct
                .
                .
    # Rest of your Mail-specific code
end tell

0 votes

Parfait (pour le problème n°2) Le '"axct" en tant que constante' a corrigé ce problème. Marqué comme étant la bonne solution. Je suis d'accord sur le fait qu'il ne devrait pas être nécessaire de contourner le problème de cette façon et que cela pourrait être considéré comme un bogue, mais au moins le contournement a du sens et fonctionne de manière fiable. Merci de votre compréhension.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X