Macでは最もメジャーなInternetメールソフト、Eudora Proのスクリプティングについて説明します。ここではv2.1.3-Jを使って説明していますが、v3以降でも基本的には同じですのでご安心下さい。まず、新規メッセージを作成しましょう。
tell application "Eudora Pro 2.1.3-J" set NewMessage to make message at end of mailbox "送信" set field "To" of NewMessage to "karino@drycarbon.com" set field "Subject" of NewMessage to "" activate end tellまず新しいメッセージをメールボックス「送信」に作成し、そのメッセージの宛先を「To」フィールドに入力します。大事な部分はこれだけですが、その後ユーザがメッセージを書くことを考えて、カーソルを「Subject」に移し、Eudoraをアクティブにしています。もちろん、本文(body)に文字列をあらかじめ入力しておいたり、決まったサブジェクトを挿入しておくこともできますよ。
さて、次はEudoraに「接続」させてみましょう。
「connect」命令は、「メールチェック」「メール送信」などを独立して行うことができます。例えばチェックだけをしたいなら、
connect with checking without sendingとすればいいですし、逆に送信だけをしたいなら、
connect without checking with sendingとするだけでOKです。もちろん、単に「connect」とすれば、ユーザがEudoraで「接続」したときと同じように、全ての動作が実行されます。
次の例は、Eudoraに対して1分に1度「接続」するよう命令するスクリプトです。
on run tell application "Eudora Pro 2.1.3-J" launch end tell end runon idle tell application "Eudora Pro 2.1.3-J" try connect with checking without sending on error end try end tell return 60 end idle
何に使うのか、と言われても困るのですが、例えばPPP接続のユーザは、オンライン時のみ定期的なメールチェックを行いたいですよね? しかし初期設定でメールチェックを設定すると、オフライン時にもチェックしようとしてエラーを出してしまいます。だからと言って毎回設定を変更するのも面倒だし… そういう時に利用できるスクリプトです。
さて、ここまではEudora本体の機能を利用するだけのスクリプトでしたが、今度はEudoraが保持しているメッセージを外部に取り出すためのものを考えます。
まず、「受信」メールボックスにあるメッセージを取り出すことから考えてみましょう。メッセージは番号で取り出しますので、次のように書くことができます。
tell application "Eudora Pro 2.1.3-J" tell mailbox "受信" message 1 end tell end tellまあ、これをもっと簡単に、
tell mailbox "受信" of application "Eudora Pro 2.1.3-J" message 1 end tellとしてもいいですが、どちらにするかは好みの問題だと思います。
これで最初のメッセージが取り出せたわけですが、このメッセージには色々な属性があります。詳しいことはEudora Proの用語説明を見てもらうとして、よく使うものを挙げてみると「name, sender, body」等のメッセージ内容や「status, size」等の付加情報があります。
例えば本文を取り出したければ、次のように書きます。
tell mailbox "受信" of application "Eudora Pro 2.1.3-J" body of message 1 end tellまあ、属性の種類さえわかっていれば、このあたりは簡単に利用できるようになるでしょう。
さて、メッセージの指定は番号で行うと言いましたが、それではメッセージの数を知る方法がないと困りますね? メッセージを数えるためには、次のようにします。
tell mailbox "受信" of application "Eudora Pro 2.1.3-J" count message end tellこれにより、「受信」メールボックスに含まれるメッセージの数がわかるというわけです。
ところで、「受信」以外のメールボックスを指定するときはどうしたらいいでしょうか。例えば「個人メール」というメールフォルダを作って、その中に「加藤さん」というメールボックスを置いたとすると、どうでしょう。
これは、次のようにして指定します。
tell mailbox "加藤さん" of mail folder "個人メール" of application "Eudora Pro 2.1.3-J"つまり、メールフォルダ「個人メール」のメールボックス「加藤さん」に対して命令を与えるわけです。ちなみに、このメールボックスのフルパスネームが分っていれば、次のようにも指定できます。
tell mailbox "Macintoch HD:システムフォルダ:Eudora:個人メール:加藤さん" of application "Eudora Pro 2.1.3-J"どの書き方を選ぶかは場合によりますが、自分の環境のみを対象にしたスクリプトの場合はフルパス指定でも相対パス指定でもいいですし、「受信」や「送信」といった標準的なメールボックスを操作の対象にする場合は相対パス指定がいいのではないかと思います。
さて、以上の知識をを使って、メッセージ内容をファイルメーカーProに書き込むスクリプトを考えてみましょう。
on run tell application "Eudora Pro 2.1.3-J" tell mailbox "加藤さん" of mail folder "個人メール" set MailNum to count message repeat with i from 1 to MailNum set theName to name of message i set theMessage to message i tell application "ファイルメーカー Pro" create new record with data {theName, theMessage} end tell end repeat end tell end tell end runタイトルとメッセージ内容をファイルメーカーのデータベースに書き込むスクリプトです。このままでは実用性皆無ですが (^ ^; まあ、多少は参考になるかも知れません。
ということで、簡単ながら、Eudora Proのスクリプティングについてでした。