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

MailerSampleについて

発言者:Bon
( Date Monday, May 20, 1996 07:50:45 )


 TCP/IP Scripting Addtion(2.0.6) とsendmai(2.0)のスクリプトを使用し実験しています。

 SMTPセッションの開始のところでエラーが出ていまいます。


on send_message(email_address, email_subject, email_data)
try
  ・
  ・
  ・
 readresponse(sss)
 tcp write data "HELO" & crlf stream sss
  ・
  ・
  ・
  ・
end send_message

 tcp write data "HELO" & crlf stream sssのところらしいです。
 ちなみにこれを外すと一応メールの送信に成功しました。
 (受け取ったメールには"HELO"が書かれていないと言われますが・・・)
 
 確か氏の「TCP Additionによる日本語メール送信」のページのサンプルス
クリプトには tcp write data "HELO" & crlf stream sss が書いてありま
せんよね?


 それから、フォームの内容をフィールドごとに改行したものをメールとして
送信しているのですが、送られてくるメールではフィールドごとの改行が増え
ています。たぶん改行コードの変換の問題だと思うのですが、すかすかのメー
ルが何となく格好が悪いので対策がありましたら教えていただきたいのですが。


 Bon
 shunhom@hotweb.or.jp

田中求之 さんからのコメント
( Monday, May 20, 1996 16:39:51 )

> tcp write data "HELO" & crlf stream sssのところらしいです。
> ちなみにこれを外すと一応メールの送信に成功しました。

これが無くても問題ないのであれば、外してもらって結構です。

私の大学の SMTP サーバーは、この "HELO" が無くても問題なくメールが
送れるのですが、Apple Internet mail Server などは、最初にこの
HELO を送らないとメールを受け付けてもらえないようなので、追加しました。

本来は、レザルトコードをちゃんとチェックして、エラーにならないように
するべきなのですが、サンプルと言うことで手を抜いています (^_^;;
(ちゃんと SMTP について調べるのが面倒なので)

> それから、フォームの内容をフィールドごとに改行したものをメールとして
>送信しているのですが、送られてくるメールではフィールドごとの改行が増え
>ています。

フィールドごとの改行のとき、改行コードには何を使っていますか?

sendMail のスクリプトは、送るデータはリターンで改行されていると
決めて掛かって、単純に return を crlf に置き換える処理しかやって
ません。

もし、改行コードが return 以外の場合もありうるというのでしたら、
send_message ハンドラーの中の

    --- 漢字コードと改行コードの変換
    set email_data to SjisToJis email_data
    set email_data to xReplace email_data search return replace crlf

の部分を

    --- 漢字コードと改行コードの変換
    set email_data to SjisToJis email_data
    set email_data to xReturner email_data
    set email_data to xReplace email_data search return replace crlf

に変更してみてください(set email_data to xReturner email_data を追加)。
これによって、改行コードをいったん return に統一しておいてから crlf への
変換を行うようになります。

Bon さんからのコメント
( Tuesday, May 21, 1996 00:44:58 )

>本来は、レザルトコードをちゃんとチェックして、エラーにならないように
するべきなのですが、サンプルと言うことで手を抜いています 

 "HELO"を送るか送らないかの区別をしなければいけないのですね。"HELO"
なしでエラーが起きたら、"HELO"をくっつけて再度トライといった単純なチ
ェックくらいはできそうですのでやってみます。

 TCP/IP Scripting Addtionについて詳しく調べてないのでご迷惑をおかけ
しました。それから、改行コードの問題も何とかなりました。御指摘のよう
に一部変換していない改行コードがあったようです。


 Bon
 shunhom@hotweb.or.jp

田中求之 さんからのコメント
( Tuesday, May 21, 1996 14:36:51 )

> TCP/IP Scripting Addtionについて詳しく調べてないので

ネットワーク処理のスクリプトを書く場合、TCP/IP osax 自体の使い方よりも
SMTP なり POP なりの、個々のサービス(プロトコル)が、どのような手順で
処理を行うようになっているかを調べてテストするのが面倒ですね。

TCP/IP osax 自体は、ようは、ポートに connect して、write と read で
データをやりとりして、用が済んだら close するだけでいいわけですが、具体
的に、どのようなデータを write/read し、またレザルトなどがどのような
形式で返ってくるかを分かっていなければ、何もできないわけです。

もちろん、RFC を調べれば書いてあるわけですが、わかっていてもなかなか
面倒な作業であることには変わりありませんものね。

私の場合、まず RFC を読んでだいたいの手順がわかったら、Telnet で実際に
マニュアルで作業を行ってみて、それでうまくいったものをスクリプトに書いていく
という方法でやってます。

内田@ベルデ企画 さんからのコメント
( Wednesday, May 29, 1996 02:37:02 )

田中さんのKitには、大変お世話になってます。社内のイントラネット構築に活用
させていただいております。
TCP/IPのアプリケーションプロトコルについて、私の場合次の雑誌を参考にして
います。

OPENDESIGN No.3(CQ出版) ”イーサネットとTCP/IP”
第3章、TCP/IPアプリケーションプロトコル
OPENDESIGN No.8(CQ出版) ”電子メールシステム完全マスタ”
第5章、電子メールの動作メカニズム
いずれも、SMTP,POPのプロトコルが詳しく説明されていて非常に助かっています。
ただし、説明文と図表で一部表記が異なったりしているところもありますが。
そこは、トライ&エラーでがんばってみてください。
(ちなみにいずれも同じ著者で、No.8の方がより詳しく書かれています)
御参考まで。