このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

DropMailer for Eudora Pro J

発言者:田中求之
( Date Wednesday, January 31, 1996 15:54:20 )


CGI には関係ない話ですが (^_^;;

AppleScript を利用して、Drag & Drop したファイルを自動的に Eudora Pro で
メールするためのスクリプトです。

使用法:
まず、以下のファイルを Droplet としてセーブします。スクリプトの部分を
コピーして、Script Editor のウィンドウにペーストし、Check Synatx でコ
ンパイルを行った後に、アプリケーションとしてセーブしてください。
セーブの際、Never Show StartUp Screen をチェックしておいてください。

次に、Eudora Pro の送信用ステーショナリを準備します。Eudora Pro を
たち上げ、新規メッセージを選んで、新しいメール用ウィンドウを開きます。
この状態で、「別名で保存」を選び、一番下の「ステーショナリ」をチェック
した上で、セーブしておいてください。このステーショナリファイルを使うこ
とで新たなメールを作成するようになっています。

以上のセットアップを終わったら、メールしたいファイルを選んで、Drag & Drop
してください。最初に実行した時には、ステーショナリの場所を尋ねるように
なっています(2度目からは尋ねません)。

Drag & Drop されファイルの中に、テキストファイルがあった場合は、その
テキストファイルがメールの本文(Body)となり、他のファイルはすべて
ファイル添付(Attachment)で送られます。

複数のテキストファイルがあった場合は、最初に選択されたテキストファイルが
メッセージ用のファイルと見なされます。

メッセージ用のファイルの冒頭に、送り先のアドレスと、メールの subject を
書いておけるようになっています。書式は

TO:<送り先のアドレス>
SUBJ:<Subject>

です。かならず TO: が1行目、SUBJ: が2行目に書かれある必要があります。
ただし、SUBJ: は省略することも可能です(ファイル名をデフォルトの SUBJ
とみなしたうえで、確認を求めるようになっています)。
1行目に TO: が書かれていない場合は、アドレスと Subject をダイアログで
入力することになります。

以下のスクリプトでは、メールをキューに入れた時点で処理を終わるように
してありますが、最後のコメント部分を有効にすると、発信まで行います。

また、キューに入れる前にメールの確認を行いたい場合は、
queue message 0 をコメントにして無効にしてください。

---- Script of Drop Mailer 0.91 ---

property mybase : ""

on run
  set myF to choose file
  open ({myF})
end run

on open (myFlist)
  
  if mybase = "" then
    set mybase to ツ
      (choose file with prompt ツ
        "送信用ステーショナリは?" of type {"EuSn"}) as string
  end if
  
  set msgFlg to true
  set myDList to {}
  
  set myData to ""
  set mysubj to ""
  set myAddress to ""
  set del2nd to false
  
  repeat with thisF in myFlist
    set myF to contents of thisF
    set myInfo to info for myF
    if not (folder of myInfo) then
      if ((file type of myInfo) = "TEXT") and msgFlg then
        set dx to open for access myF
        set myData to read dx
        close access dx
        set mysubj to name of myInfo
        copy false to msgFlg
      else
        set end of myDList to myF
      end if
    end if
    
  end repeat
  
  if myData is not "" then
    
    set AppleScript's text item delimiters to {return}
    set my1st to text item 1 of myData
    set my2nd to text item 2 of myData
    set AppleScript's text item delimiters to {""}
    
    
    if "TO:" is ((characters 1 through 3 of my1st) as string) then
      set myAddress to (characters 4 through -1 of my1st) as string
      
      if "SUBJ:" is ((characters 1 through 5 of my2nd) as string) then
        set mysubj to (characters 6 through -1 of my2nd) as string
        set del2nd to true
      end if
      
    else
      set myAddress to ""
      set mysubj to ""
    end if
    
    set AppleScript's text item delimiters to {return}
    if del2nd then
      set myData to (text items 3 through -1 of myData) as string
    else if myAddress is not "" then
      set myData to (text items 2 through -1 of myData) as string
    end if
    set AppleScript's text item delimiters to {""}
    
  end if
  
  
  if myAddress is "" then
    display dialog "Send to?" default answer ""
    set myAddress to text returned of the result
  end if
  
  if not del2nd then
    display dialog "Subject?" default answer mysubj
    set mysubj to text returned of the result
  end if
  
  display dialog "Are you sure of sending..." & return & return ツ
    & "TO: " & myAddress & return & return ツ
    & "SUB: " & mysubj ツ
    buttons {"Cancel", "OK"} ツ
    default button "OK"
  
  if button returned of the result = "Cancel" then error -128
  
  tell application "Finder"
    open file mybase
  end tell
  
  tell application "Eudora Pro 2.1.3-J"
    set field "TO" of message 0 to myAddress
    set field "subject" of message 0 to mysubj
    set body of message 0 to myData
    if myDList is not {} then attach to message 0 documents myDList
    queue message 0
    --- connect with sending
  end tell
  
end open

---- End Of Script ----

改造その他なんでもご自由にどうぞ。

Hope this helps.