7

現在の送信メッセージの送信者を Apple の Mail.app に設定する AppleScript を書きたいと思います。

私はこれを試しました:

tell application "Mail" to set sender of front outgoing message to "<my email address>"

error "Mail got an error: Can’t set sender of item to any." number -10006 from sender of item to anyしかし、私には意味をなさないエラーメッセージが表示されます。

次のように、フロントの送信メッセージを調べようとすると:

tell application "Mail" to get properties of front outgoing message

私が{class:item}期待するような「送信メッセージ」オブジェクトの代わりに、私は見返りを受け取ります。

何か案は?

4

7 に答える 7

5

残念ながら、Mail with Applescriptのオブジェクトのプロパティを取得または設定することはできません。outgoing message

代わりに、ウィンドウ要素を直接操作する回避策である GUI スクリプトを使用してこれを実現できます。

このコードはあなたのために働くはずです:

tell application "System Events"
  tell process "Mail"
    click pop up button 1 of window 1
    click menu item 6 of menu 1 of pop up button 1 of window 1
  end tell
end tell

4 行目の を、希望する送信者のリスト内の番号に変更menu item 6します (たとえば、このスクリプトで変更したい送信者がリストの 4 番目の送信者である場合は、 に変更menu item 6menu item 4ます)。


更新: 2014 年 4 月 26 日現在、s のプロパティを取得/設定することoutgoing messageはまだ不可能であり、この回避策は OS X 10.9 Mavericks でも機能します。

于 2011-10-07T10:41:28.207 に答える
4

もう少し複雑だと思います。私自身の実験は、このスレッドでの Alan Kimelman の結論に同意します。つまり、AppleScriptは、スクリプトによってゼロから作成された送信メッセージに対して期待どおりに機能します。たとえば、次のコードは機能します。

tell application "Mail"
set newMessage to (a reference to (make new outgoing message))
tell newMessage
    make new to recipient at beginning of to recipients ¬
        with properties {address:"hello@world.com", name:"The World"}
    set the sender to "Jerry Krinock <jerry@sheepsystems.com>"
    set the subject to "A Test"
    set the content to "This is only a test."
    send
end tell
end tell

ただし、メッセージが他の方法で作成された場合 (たとえば、Safari に電子メールで共有するように指示して HTML メッセージを作成している場合)、AppleScript が壊れているという Matthew McVickar の意見は正しい。プロパティを設定または取得することはできず、sendコマンドも拒否されます。

于 2014-06-05T00:23:28.943 に答える
3

送信メッセージの送信者を設定できないのは、少しイライラします。

これは、私が何年も前に書いたマシューのスクリプトのより一般的なバージョンで、頻繁に使用しています。引数は、「From:」ポップアップに表示される内容を正確に含む文字列です。

"Mitchell L Model <dev@software-concepts.org>"

(多くの GUI スクリプトを作成しないと、このような詳細を正確に把握するのは非常に困難です。)

to setFrom(address)
    tell application "System Events"
        activate application "Mail"
        tell pop up button "From:" of window 1 of application process "Mail"
            click
            tell menu item address of menu 1 to click
        end tell
    end tell
end setFrom

パラメーター化されたハンドラーを使用する理由は、キーストローク マクロ機能を使用して、各電子メール アドレスのキーストロークの組み合わせをバインドするためです。それぞれが、上記のハンドラーを含むファイルをロードする AppleScript を実行し、特定の電子メール アドレスでそれを呼び出します。例えば:

property util : load script alias (((path to home folder) as text) & "Scripts:Utilities.scpt")

util's 's setFrom("Mitchell L Model <dev@software-concepts.org>")
于 2013-07-18T22:02:55.230 に答える
1

AppleScript を使用して、任意の送信アドレス (少なくとも、Mail.app の設定で構成されたもの) を使用して新しい送信メッセージを作成するのは簡単です。

ここでの議論は、メッセージが作成された後に (誤って) 変更しようとすることにかかっています。代わりに、メッセージを作成するときに指定します。

set new_m to make new outgoing message with properties {sender:"My Name <me@my.com>"}

引用符で囲まれたテキストは、設定されたアカウントの本名と電子メール アドレス (シェブロン) の両方と一致する必要があります。一致するものがない場合、Mail.app はデフォルトのアドレスを使用します

于 2015-03-23T20:25:25.910 に答える
0

私が提供した GUI スクリプトの例に代わるものは、'Watch Me Do' コマンドを利用する Automator スクリプトです。内部でどのように機能するかは正確にはわかりませんが、表向きはマウスの動きと GUI のやり取りを記録し、実行時に記録した内容を再現します。残念ながら、スクリプトの実行時にかなりの遅延が発生しました。実行するように要求した後、5 秒以上後に実行されることがあり、これは明らかに使用できません。

GUI スクリプトによる方法は、ほとんど瞬時に起動でき、見栄えもすっきりします (マウスの動きはありません)。私はそれをお勧めします。

于 2011-10-07T11:06:52.773 に答える
0

代わりにこれを試してください。

tell application "Mail" to make new outgoing message with properties {sender:"<your_email_address>", visible:true}

更新: Mail のスクリプト辞書を調べて、できることとできないことを確認します。そこで提供される情報が役立つ場合があります。:)

于 2011-07-29T19:56:36.677 に答える