- PR -

メールを受け取ってプログラムを実行するには

1
投稿者投稿内容
しろくま
会議室デビュー日: 2003/10/02
投稿数: 11
投稿日時: 2004-04-09 09:54
おせわになります、しろくまです。

現在
/etc/mail/aliases に以下のように指定し
-----
prog-test: "|/etc/mail/prog-test.sh"
-----
prog-test にメールが届いたとき、prog-test.sh という名前のプログラムを実行するようにしています。
その中で
/usr/j
#!/bin/sh
XFILE=/var/tmp/prog-test.$$
cat /dev/null > $XFILE
while read LINE
do
echo "$LINE" >> $XFILE
done

/usr/java/j2sdk1.4.0_03/bin/java -classpath /usr/java/j2sdkee1.3.1/lib/j2ee.jar TestPG $XFILE
-----

のようにファイルで受け取り処理を行なっているのですが
直接(?)標準入力からメールを受け取ることが出来るのでしょうか。
また、メール添付ファイルは受け取ることが出来るのでしょうか。
ご存知の方がいらっしゃいましたらお願い致します。
c9katayama
常連さん
会議室デビュー日: 2003/02/04
投稿数: 38
投稿日時: 2004-04-09 11:33
メールを受け取ってプログラムを実行する、という
ことだけでいうと、JakartaプロジェクトのJamesというのを
使えば楽に出来ると思います。
本文はもちろん、添付ファイルも取れますし、返信を
送ることも出来ます。
ちいにぃ
大ベテラン
会議室デビュー日: 2002/05/28
投稿数: 244
投稿日時: 2004-04-09 12:28
引用:

しろくまさんの書き込み (2004-04-09 09:54) より:

直接(?)標準入力からメールを受け取ることが出来るのでしょうか。
また、メール添付ファイルは受け取ることが出来るのでしょうか。



Javaの標準入力は System.in を使います。
メールの添付ファイルは受け取れます。というか、ヘッダ、本文、添付は
特に分離されません。で、ここでJavaMailを使えば添付ファイルを分離できる
と思います。

しろくま
会議室デビュー日: 2003/10/02
投稿数: 11
投稿日時: 2004-04-09 13:53
回答ありがとうございます。

>JakartaプロジェクトのJamesというのを
>使えば楽に出来ると思います。

こんなのがあったんですね、今度テストしてみたいと思います。
現在
postfix-2.0.13
を使用していますが単にメールサーバーとして見た場合に
Jamesの性能、使い勝手はどんな感じなのでしょうか。
しろくま
会議室デビュー日: 2003/10/02
投稿数: 11
投稿日時: 2004-04-09 13:59
引用:

ちいにぃさんの書き込み (2004-04-09 12:28) より:
引用:

しろくまさんの書き込み (2004-04-09 09:54) より:

直接(?)標準入力からメールを受け取ることが出来るのでしょうか。
また、メール添付ファイルは受け取ることが出来るのでしょうか。



Javaの標準入力は System.in を使います。
メールの添付ファイルは受け取れます。というか、ヘッダ、本文、添付は
特に分離されません。で、ここでJavaMailを使えば添付ファイルを分離できる
と思います。




Javaではなくシェルの記述になってしまうようですが
/usr/java/j2sdk1.4.0_03/bin/java -classpath /usr/java/j2sdkee1.3.1/lib/j2ee.jar TestPG < /dev/null
のようになるのでしょうか。もしくは、何も渡さず
/usr/java/j2sdk1.4.0_03/bin/java -classpath /usr/java/j2sdkee1.3.1/lib/j2ee.jar TestPG
のままで良いのでしょうか。

こくぼ
大ベテラン
会議室デビュー日: 2003/08/11
投稿数: 229
お住まい・勤務地: 国境の南、太陽の西。
投稿日時: 2004-04-09 15:30
引用:

しろくまさんの書き込み (2004-04-09 13:53) より:

postfix-2.0.13
を使用していますが単にメールサーバーとして見た場合に
Jamesの性能、使い勝手はどんな感じなのでしょうか。




つい最近、Jamesを使ってメールを受け取ったら
その内容を掲示板に書き込むというプログラムを作成しました。
Mailetという機構を使えばビックリするくらい簡単にできました。
趣味で作成したので実用的かはわかりませんが、
Javaでプログラミングするなら選択肢に入るかもしれません。
(Jamesについての大体の情報はネット上から入手できると思います)

ちいにぃ
大ベテラン
会議室デビュー日: 2002/05/28
投稿数: 244
投稿日時: 2004-04-09 18:56
引用:

しろくまさんの書き込み (2004-04-09 13:59) より:

Javaではなくシェルの記述になってしまうようですが
/usr/java/j2sdk1.4.0_03/bin/java -classpath /usr/java/j2sdkee1.3.1/lib/j2ee.jar TestPG < /dev/null
のようになるのでしょうか。もしくは、何も渡さず
/usr/java/j2sdk1.4.0_03/bin/java -classpath /usr/java/j2sdkee1.3.1/lib/j2ee.jar TestPG
のままで良いのでしょうか。



なにも渡さなくてよいです。
つまり、次のようになります。

#!/bin/sh
/usr/java/j2sdk1.4.0_03/bin/java -classpath /usr/java/j2sdkee1.3.1/lib/j2ee.jar TestPG

たとえば、こういうコードの場合。

コード:
[SystemIn.java]
import java.io.IOException;
public class SystemIn {
    public static void main(String[] args) throws IOException {
        for (int b; (b = System.in.read()) >= 0; ) {
            System.out.write(b);
        }
        System.out.println("END.");
    }
}

[t.sh]
#!/bin/sh
java SystemIn



こういう風にして、標準入力から読み込めることを確認できます。

$ echo "hello world" | ./t.sh
hello world
END.
1

スキルアップ/キャリアアップ(JOB@IT)