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

MondoMailとTango

発言者:石津@RJC
( Date Wednesday, January 29, 1997 10:54:55 )


MondoMailのテストをし始めているのですが、おかしなことに気がつきました。
田中さんのScriptまはまだ設定していないのですが、MondoMailに付属してくる
サンプルのScriptをAppleScriptとTangoのqryドキュメントで比較してみました
ところ、AppleScriptではメールが送信されるのに、Tangoのqryドキュメントか
らは送信されないのです。

ACTIONRESULTとしては、どちらも"The mail message has been queued for sending."
を返してくるのですが、メールサーバをチェックするとqryドキュメントからは
SMTPが発信されていないのです。

他に試された方でこのような現象を確認されている方いらっしゃいますか?

牧原@宮崎医大 さんからのコメント
( Thursday, January 30, 1997 17:38:23 )

Tango のサンプルは、正常に動いています。試してみてください。

この TangoQuery も手を加えれば、日本語も送ることができますね。
サンプルができたらまた御紹介します。

→  Mond Mail のサンプルページ

石津@RJC さんからのコメント
( Friday, January 31, 1997 00:57:12 )

他で動作しているということは、私の環境の問題なのかな?
クラッシュするかメール送信しないかのどっちかなんですが。

マシンを変えて試してみようと思います。

うちでは一応MondoMail.qryから送信するメールはdelegatedでコード変換してやる
ように設定していました。(ちょっとずる。)

田中求之 さんからのコメント
( Friday, January 31, 1997 02:20:15 )

Tango の qry ファイルの中で AppleEvent の処理を記述できますよね。
ですから、 Tanaka's osax の SjisToJis を AppleEvent で呼び出す
という方法も使えると思います(実行結果を変数に収めるってできましたよね?)

ちょっと Tango のマニュアルでも調べてみよう…

ちなみに、SjisToJis を呼び出す AppleEvent は、Event Class = 'XUVJ'
Event ID = 'sjjs' です。ダイレクトパラメーター('----')に渡した文字列が
JIS に変換されて返されます。



ebi さんからのコメント
( Friday, January 31, 1997 08:57:17 )

私の環境では、TangoからAppleScript経由で、MondoMailを起動して
メールを送信するようにしています。

ところで、to,CC,BCCのアドレスに同一のアドレスを設定すると
1つしかメールが送信されない現象が起こってるんですが・・・


石津@RJC さんからのコメント
( Friday, January 31, 1997 10:21:31 )

>Tango の qry ファイルの中で AppleEvent の処理を記述できますよね。
>ですから、 Tanaka's osax の SjisToJis を AppleEvent で呼び出す
>という方法も使えると思います(実行結果を変数に収めるってできましたよね?)

これが可能になるとうるさいUNIXブラウザ用のヘッダもいらなくなりますね。
Insert直前に全部のデータをSJIS変換したりとか。
内田洋行にTanaka'sOSAXのバンドルをしてもらうなんてのもいいですねぇ。:-)

田中求之 さんからのコメント
( Friday, January 31, 1997 18:29:26 )

Tango の qry ドキュメントの中で、AppleEvent によって osax をコールする
というのをやってみましたが、うまくいきませんねぇ。

というのも、osax を AppleEvent で呼ぶ場合には、ターゲットアプリケーション
は指定しないのですが、Tango の AppleEvent の指定の場合はかならずターゲット
アプリケーションを指定する必要がありますので、この部分でひかっかかります。

アプリケーションを指定しないでおくと、当然のことながら、オブジェクトが見つか
らないというエラーになりますし、適当なアプリケーション、たとえば Mondo Mail
なんかを指定すると、AppleEvent のエラー(-1708) が起きます。

もちろん、AppleEvent で呼び出せるアプリケーションを作っておくことは可能
なんですが、そうするぐらいなら、結局、Mondo Mail 用のアプリケーションを
作って、それを qry から呼び出す方が簡単ですよね。

ということで、日本語の漢字コード変換を行わせようとすれば、Mondo Mail 用の
アプリケーションをスクリプトで作って、それを qry ドキュメントからコールする
のが簡単で確実のようです。

田中求之 さんからのコメント
( Friday, January 31, 1997 18:56:19 )

…と思ったら、あれ、エラーが出ない… いけるかも

えっと、osax のダイレクトコール(勝手に呼び名を付けてますが)がOKのよう
です。先ほどエラーが出たのは、イベント指定の部分がおかしかったためのよう
です。

以下の手順ですので、確認してみてください。

Tango Editor で MondoMail.qry を開きます。

SendMail の手前に新たに「アップルイベント」を挿入します。

この「アップルイベントは」以下のように設定します。

目標アプリケーション :Tango.acgi
イベントクラスコード XUVJ
イベントコード  sjjs

パラメーターを一つ追加します。

キーワード ----
値  <@POSTARG body>

これで、body 部分が Tanaka's osax の SjisToJis に渡されて JIS 変換を
施されます。この変換結果をメールするために、SendMail に以下の修正を施し
ます。

パラメーターのリストの一番上にある、キーワード ---- の値を <@POSTARG body>
から <@ACTIONRESULT AppleEvent 1> に変更する。

つまり、SendMail の手前に挿入した AppleEvent の実行結果の第1アイテム
の実行結果を Mondo Mail のパラメーターに渡すわけです

石津@RJC さんからのコメント
( Friday, January 31, 1997 18:58:13 )

うーむ、なるほど。
Appleeventを使うとMondoMailがクラッシュするので、とりあえずAppleScriptで
作ってしまったのですが、これが正解でしたね。:-)
ちょっと残念。

田中求之 さんからのコメント
( Friday, January 31, 1997 19:09:17 )

ちょうど入れ違いになったようですが (^_^;; osax を qry で使うのも
いけるようです。

ターゲットアプリケーションに Tango.acgi を指定してごまかせるみたいですね。

いろいろとテストしてみよう。

田中求之 さんからのコメント
( Friday, January 31, 1997 23:52:44 )

なお、たぶん、同じ方法を使って、色々な osax を Tango の qry ファイルの中で
利用できると思います。ただし、文字列を渡して文字列を返す(あるいは文字列のリス
トを返す)タイプでないと処理はできないと思いますが。

牧原@宮崎医大 さんからのコメント
( Monday, February 03, 1997 07:51:45 )

Tango から日本語タイトルで、本文日本語でメールできるようにして見ました。
詳しいことは、下記の URL を御覧ください。ファイルメーカーからも日本語で
メールできます。

→  MondMailから日本語でメール

牧原@宮崎医大 さんからのコメント
( Monday, February 03, 1997 07:53:12 )

上記の URL は間違っています。下記の URL を使ってください。

→  http://teach21.miyazaki-med.ac.jp/MondMail/

牧原@宮崎医大 さんからのコメント
( Monday, February 03, 1997 15:59:43 )

“SjisToJis を呼び出す AppleEvent は、Event Class = 'XUVJ'
Event ID = 'sjjs' ”のようですが、これはどこを見たら分かりますか。
Encode MIMEJ を呼び出したいのですが、まさか作者しか分からないなんて
事はないですよね。(^ ^;

田中求之 さんからのコメント
( Monday, February 03, 1997 16:37:50 )

>Encode MIMEJ を呼び出したいのですが、まさか作者しか分からないなんて
>事はないですよね。(^ ^;

Class = 'MAEX'  ID = 'encm'

です。

ResEdit で Envode MIME J osax を開いて、aete リソースを見てもらうと
分かります。ただし、aete リソースのテンプレートが入っていない ResEdit
だとわかりにくいかも知れません。

この手の情報を得るための osax というのも存在します。 登録場所などは忘れたので、
後で改めてコメントします。

なお、Encode MIME J を qry ドキュメントから呼び出すことで、Subject を
日本語にしたメールも送信できることは、さきほど確認しました。

Subject を JIS に変換して、Encode MIME を呼びますので、Body とあわせて
3つの AppleEvent を追加することになります。

qry ドキュメントのスナップと簡単な原理を説明したファイルを後で登録しておきま
しょう。説明のページは牧原さんのところで登録してもらえるでしょうから (^_^;;



田中求之 さんからのコメント
( Monday, February 03, 1997 17:08:23 )

Event の Class と ID を簡単に知る方法があるのを忘れてました。

ただし、この方法は、日本語表現形式に対応した osax では使えません
                              ^^^^^^

まぁ、そんなのほとんどないでしょうが。

やり方は簡単で、たとえば Encode MIMEJ の場合でしたら、まず最初にスクリプト
エディタ(英語表現形式になっている)で、

Encode MIMEJ myText

というような、短いスクリプトをコンパイルします。で、このままでスクリプト表現
形式を日本語に切り替えると、コンパイルされたスクリプトが、以下のように変化
するはずです。

myText を <<イベントMAEXencm>>

これを見ればおわかりでしょうが、日本語表現形式に切り替えた時点で osax を
読んでいる部分が、AppleEvent による呼び出しに書き変わります。これによって
Encode MIMEJ の Class = MAEX ID = encm  であることが分かります。

* <<イベントXXXXyyyy>> -> XXXX が Class を示し、yyyy が ID を示す

たぶん、この表現形式を切り替える方法が、一番手っ取り早いでしょう。

田中求之 さんからのコメント
( Monday, February 03, 1997 17:41:38 )

とりあえず qry ドキュメントの中で osax を使う方法について書いたメモと、
Mondo Mail を日本語化した作業のスナップショットをまとめたものをファイ
ルとして登録しました(ページを作ってる時間がないので、ファイルとして公開
します)

参考になれば幸いです。

→  osax in qry

石津@RJC さんからのコメント
( Monday, February 03, 1997 17:49:33 )

素晴しいドキュメントありがとうございます。
うちでは今でもMondomailにAppleEvent送るとクラッシュしますので試す
ことができませんが、もう少し時間ができたら別マシンで試します。
ありがとうございます。

前薗 健一@鹿児島 さんからのコメント
( Tuesday, February 04, 1997 00:56:25 )

牧原@宮崎医大さん
> Encode MIMEJ を呼び出したいのですが、まさか作者しか分からないなんて
> 事はないですよね。(^ ^;

田中さん、フォローありがとうございます。

p.s
今度の週末は霧島で久々の温泉です。
一応、仕事なんです。 (^^;;

片山睦士@NTT さんからのコメント
( Friday, May 30, 1997 15:19:01 )

毎度参考にさせてもらってます。
TangoFMからMondomailを使ってのメール送信
について教えてください。
登録フォームで登録されたときにメールでその内容を
飛ばしたいのですがうまくいきません。
Insert InsertResponse のあとに
bodytojis subjecttojis jistomime sendmail
と書いているのですが
Missing post argument: body とかでてますし
うまくデータを引き継いでいないのでしょうか。
よろしかったら何かヒントをください。
お願いします。

田中求之 さんからのコメント
( Saturday, May 31, 1997 10:37:08 )

>Insert InsertResponse のあとに
>bodytojis subjecttojis jistomime sendmail
>と書いているのですが

フォームの項目が、それぞれ、どんなパラメーターで渡されているのかを
チェックしてください。

おそらく、パラメーターの指定が間違っているものと思われます。

(詳しい設定状況などがわかりませんので、それ以上のことはわかりませんが)

片山睦士@NTT さんからのコメント
( Thursday, June 05, 1997 08:46:20 )

>おそらく、パラメーターの指定が間違っているものと思われます。

ありがとうございます。そのとおりでした。私の理解不足が原因でした。
おかげさまでTangoで検索、詳細画面でその内容とさらに入力してもらった
項目を引き継いでMondMailで入力のあったことを連絡するメールを
飛ばすとこができました。
 この会議室の皆様のおかげです。

石津@RJC さんからのコメント
( Thursday, June 05, 1997 10:00:15 )

TangoのqryからMondoMailを利用するとアクションが速くていいんですが
MondoMailは時々(いや結構かな)送信ミスをすることがあるので、MondoMail
と同じ階層にできるfailedMailというログファイルには気をつけていた方が
いいと思います。
残念ながら送信ミスになったメールの全文は記録してくれず、送信者とタイト
ル程度しか追跡できません。
重要なメールはMondoMailでは送らないほうがいいような気がします。

大川 敦史 さんからのコメント
( Thursday, August 21, 1997 01:41:26 )

田中さんの osax in qryを参考にmondomailはなんとか動きましたが
Webstarのフォルダの中にTango.acgiをいれておき、起動しておかないと
送信できないのですが、Tango.acgiではなくプラグインを使用する場合
は、mondomail.qryの中の外部アプリsendmailのターゲットアプリは
どのように設定をすればいいのでしょうか?
どなたか、宜しくお願いします。

前田@川崎 さんからのコメント
( Thursday, August 21, 1997 08:08:00 )

TangoのプラグインはWebSTARのドキュメントルートにTango.acgi
を置いてアクション設定をした時と同じ動作をしているはずです。

テストしていませんが,ターゲットアプリケーションへのパスの
記述をWebSTARのドキュメントルートから記述してみては如何でしょうか?


田中求之 さんからのコメント
( Thursday, August 21, 1997 13:44:12 )

>mondomail.qryの中の外部アプリsendmailのターゲットアプリは

sendMail ではなくて、osax を呼びだす際の目標アプリケーションの設定ですよね?
(sendaMail の場合は MondoMail が目標アプリケーションですから)

今、ちょっと試せないのですが、理論的には、Web サーバー自体を目標アプリにして
おけばよいはずです。つまり、

:WebSTAR

にしてみてください。

osax を呼び出すメッセージが、継承によって最終的にシステムにたどり着けばよいはず
ですので、AppleEvent に対応している起動中のアプリケーションであれば、目標アプリ
ケーションに設定できるはずなのですが…

… Plugin のことは考えていなかったなぁ (^_^;;

熊沢@INET-G さんからのコメント
( Tuesday, February 03, 1998 19:54:28 )

はじめて投稿させていただきます。

MondoMailのテストをしているのですが、サンプルのみをセットして
いますが、クエリーは正常終了しているにも関わらず、メールの送信が
行われません。単純な設定ミスかもしれませんが・・・。
どなたかアドバイスをいただければ幸いです。

稲垣@信州 さんからのコメント
( Wednesday, February 04, 1998 10:05:21 )

 MondoMailの送信エラーであれば、MondoMailのアプリケーションと同
じフォルダに、エラー情報がfailed.mailという名前のファイルとして残
りますので、その辺からチェックをしてみてはどうでしょうか?


熊沢@INET-G さんからのコメント
( Wednesday, February 04, 1998 15:27:34 )

稲垣さん、レスありがとうございました。
さっそくfailed.mailの中を確認したところ、エラー103が
出ていたので、SMTPの設定を修正して、エラーは出なく
なりました。でもやっぱりメールが送信されないのです。
どこが間違っているのだろう?
再度チャレンジしてみます。

熊沢@INET-G さんからのコメント
( Thursday, February 05, 1998 18:54:13 )

出来ました。
fromUserの所をアドレスで記述してなかったので、
正常に動作しなかったようです。
toとfrom共にメールアドレスで記述したところ上手くいきました。
次は日本語メールの送信に着手します。
ご迷惑をおかけしました。

沼尻@電総研 さんからのコメント
( Friday, March 06, 1998 18:07:39 )

以下の環境で、メールの自動送信を行おうとしているのですが、どうしてもエラーが
出てしまいます。
どなたか何か情報のお持ちの方がいましたら、教えていただけますでしょうか?

・環境
 Mac OS 8.1
 ファイルメーカーPro 4.0J
 Tango for FileMaker Pro 2.2.1J(MAC)
 WebSTAR 2.0J
 MondoMail Ver1.1.4
 Tanaka's osax Ver1.24 *1
 Encode MIMEJ *1

 *1機能拡張のスクリプティング機能追加内にインストール

・設定作業
 AppleScript内のスクリプト編集プログラムを起動し、[編集]メニューの[書式]で
 [AppleScript英語]を選択した。

・エラーメッセージ
 *****************
 エラー

 要求を処理中にエラーが発生しました。:

 位置: bodyTOjis
 クラス: External
 メインエラー番号: -1708


 位置: bodyTOjis
 クラス: Internal
 メインエラー番号: -101

 データソース操作中のエラーです。
 *****************

・動作
Tango Editorにてsendmailという外部命令を作成して、ターゲットアプリケーションに
Mondo Mail.fatを設定し、実行した場合にはメールの送信はできました。

しかし、日本語を使用してメールを送信使用とするときに、osax関連を使用すると上
記のエラーが出てしまいます。

internetuser5月号にはスクリプトを作成しなければならないみたいなことが書いて
ありますが、osaxを使用するときにスクリプトを作成しないといけないのでしょうか。
スクリプトでは、osaxのイベントクラス・コードとイベントコードを設定するようなことが
書いてあります。
#どのように書いたらいいのか分かりません。


どなたか分かりましたらよろしくお願いいたします。




沼尻@つくば さんからのコメント
( Friday, March 06, 1998 18:07:52 )

以下の環境で、メールの自動送信を行おうとしているのですが、どうしてもエラーが
出てしまいます。
どなたか何か情報のお持ちの方がいましたら、教えていただけますでしょうか?

・環境
 Mac OS 8.1
 ファイルメーカーPro 4.0J
 Tango for FileMaker Pro 2.2.1J(MAC)
 WebSTAR 2.0J
 MondoMail Ver1.1.4
 Tanaka's osax Ver1.24 *1
 Encode MIMEJ *1

 *1機能拡張のスクリプティング機能追加内にインストール

・設定作業
 AppleScript内のスクリプト編集プログラムを起動し、[編集]メニューの[書式]で
 [AppleScript英語]を選択した。

・エラーメッセージ
 *****************
 エラー

 要求を処理中にエラーが発生しました。:

 位置: bodyTOjis
 クラス: External
 メインエラー番号: -1708


 位置: bodyTOjis
 クラス: Internal
 メインエラー番号: -101

 データソース操作中のエラーです。
 *****************

・動作
Tango Editorにてsendmailという外部命令を作成して、ターゲットアプリケーションに
Mondo Mail.fatを設定し、実行した場合にはメールの送信はできました。

しかし、日本語を使用してメールを送信使用とするときに、osax関連を使用すると上
記のエラーが出てしまいます。

internetuser5月号にはスクリプトを作成しなければならないみたいなことが書いて
ありますが、osaxを使用するときにスクリプトを作成しないといけないのでしょうか。
スクリプトでは、osaxのイベントクラス・コードとイベントコードを設定するようなことが
書いてあります。
#どのように書いたらいいのか分かりません。


どなたか分かりましたらよろしくお願いいたします。




沼尻です。 さんからのコメント
( Friday, March 06, 1998 18:10:40 )

二回も入れてすいません。
途中でpost中に停止ボタンを押してしまいました。

管理者の方、申し訳ありませんが消して下さい。

よしもと さんからのコメント
( Friday, March 06, 1998 18:33:47 )

あれ?MacOS 8.xから、「Scripting Additions」フォルダーは「Extensions」
フォルダーの中から出てたんじゃない?

前の場所に入れていても、ちゃんと動くんですか?>詳しい人

#僕はAppleScriptは使っていないんで、良く分からないです。

田中求之 さんからのコメント
( Friday, March 06, 1998 20:48:13 )

Tanaka's osax と Encode MIMEJ osax は、

システムフォルダーの中の「スクリプティング機能拡張」フォルダーに入れる

必要があります( MacOS 8 で位置が変更になってます)。

面倒なら、システムフォルダーにドロップすれば、機能拡張やフォントなどと
同じように、システムが正しい位置に入れてくれますので、これが簡単でしょう。

funa さんからのコメント
( Friday, March 06, 1998 21:50:51 )

以前私が日本語送信を行うときに、やはりエラーで送信できませんでした。
このときはエラー-2740で、沼尻さんとは異なるかもしれませんが、
ご参考までに、その時行った対応を下記します。

AppleScript英語にてメッセージを処理するときに、
日本語も1バイト文字として処理されます。(いわゆる文字化け状態)
その際に英語スクリプト上障害となる、\の記号が勝手に挿入されてしまうのです。

そこで仕方なく、文字化けしたときに\を含む2バイト文字(申など)を、
ファイルメーカー上の計算で\\となるよう修正しました。
メッセージの文章をbodysourceとして、
計算結果の文章を実際に使用するbodyにします。

body=
Substitute(Substitute(Substitute(Substitute(Substitute(Substitute(Substitute(Substitute(Substitute
(bodysource, "十", "十\"), "貼", "貼\"), "―", "―\"), "予", "予\"), "表", "表\"), "ソ", "ソ\"),
 "能", "能\"), "構", "構\"), "申", "申\")

このやり方はあまりスマートではないと思いますので、
もっと簡単なやり方をご存知の方、いらっしゃったらお願いします。


ここからは質問ですが、マックをリスタートすると、
はじめのメール送信のとき、
AppleScriptがMondoMailの場所を忘れ、必ずどこにあるか訪ねてきます。
そのため、リスタートの度に必ず1度テスト送信を行わなくてはならないので、
非常に面倒です。
この問題の対応をご存知の方、教えて下さい。

田中求之 さんからのコメント
( Friday, March 06, 1998 22:43:35 )

>その際に英語スクリプト上障害となる、\の記号が勝手に挿入されてしまうのです。

AppleScript はこのような処理は行いませんよ? スクリプトエディタの実行結果
の表示などの場合は \ が挿入されたかのように表示されますが、データ自体を勝手に
書き換えることは絶対にありません。


>AppleScriptがMondoMailの場所を忘れ、必ずどこにあるか訪ねてきます。
>そのため、リスタートの度に必ず1度テスト送信を行わなくてはならないので、
>非常に面倒です。
>この問題の対応をご存知の方、教えて下さい。

Mondo Mail を呼び出している部分を

tell application "Xeus:Servers:MondoMail"

というようにフルパスで指定します。こうすれば、MondoMail の位置を動かさない
かぎり大丈夫です。

funa さんからのコメント
( Saturday, March 07, 1998 00:01:13 )

>...\の記号が勝手に挿入...

すいません。いいかげんな表現でした。おわびして訂正します。
申の字は、文字化けすると「e\」のような文字列になり、
\がスクリプトにひっかかってしまうのです。

同様に、英文でも"xxx"のようにダブルクオーテーションを含む文があると
送信できなくなってしまいます。
「"」については、ファイルメーカーで置き換えができず、
「"」の含まれる文章については、対応できない状況です。


>Mondo Mail を呼び出している部分を
>tell application "Xeus:Servers:MondoMail"
>というようにフルパスで指定します。

ありがとうございます!
おかげさまですぐに解決できました。