投稿日:2004年04月05日 作成鷹の巣

No.15536 javaのmailで、エラーが出る。



javaのmailで、エラーが出る。

No.15536 投稿時間:2004年04月05日(Mon) 15:43 投稿者名:TOMOMI URL:

imap.jar
mail.jar
mailapi.jar
pop3.jar
smtp.jar
activation.jar

をJavaのディレクトリに置きクラスパスを通す。

export CLASSPATH=$CLASSPATH:/usr/local/java/lib/imap.jar
export CLASSPATH=$CLASSPATH:/usr/local/java/lib/mail.jar
export CLASSPATH=$CLASSPATH:/usr/local/java/lib/mailapi.jar
export CLASSPATH=$CLASSPATH:/usr/local/java/lib/pop3.jar
export CLASSPATH=$CLASSPATH:/usr/local/java/lib/smtp.jar
export CLASSPATH=$CLASSPATH:/usr/local/java/lib/activation.jar

と入力して、tomcat,apacheを再起動してもmailが送信できません。



org.apache.jasper.JasperException: JSPのクラスをコンパイルできません

JSPファイル: /jsp/sendmail.jsp の中の行: 8でエラーが発生しました

生成されたサーブレットのエラーです:
[javacハ Compiling 1 source file

/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:76: 文字列リテラルが閉じられていません。
out.println("鐃緒?鐃緒申鐃緒申膀??鐃順?鐃?;
^
JSPファイル: /jsp/sendmail.jsp の中の行: 8でエラーが発生しました

生成されたサーブレットのエラーです:
/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:77: ')' がありません。
} catch (Exception e) {
^
JSPファイル: /jsp/sendmail.jsp の中の行: 8でエラーが発生しました

生成されたサーブレットのエラーです:
/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:78: 文字列リテラルが閉じられていません。
out.println("鐃緒?鐃緒申鐃緒申膀????申鐃?;
^
JSPファイル: /jsp/sendmail.jsp の中の行: 8でエラーが発生しました

生成されたサーブレットのエラーです:
/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:79: ')' がありません。


とエラーが表示されます。
以上のインストール方法であってるのでしょうか?
宜しくお願いします。


単純構造にしてみましょう。

No.15541 投稿時間:2004年04月05日(Mon) 21:26 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

メッセージを見る限り、言われる通りにカッコやダブルクォートが対応できていない気がします。

import javax.mail.*;
import javax.mail.internet.*;

は大丈夫ですよね。

ちなみに我が家の CLASSPATH (該当箇所のみ抜粋)です。
送受信できています。参考にしてください。

# env | grep CLASSPATH
CLASSPATH==.:
/usr/java/j2sdk1.4.2/jre/lib:
/usr/java/j2sdk1.4.2/lib:
/usr/java/j2sdk1.4.2/lib/tools.jar:
/usr/java/j2sdk1.4.2/lib/mail.jar:
/usr/java/j2sdk1.4.2/lib/activation.jar:
/usr/local/jakarta-tomcat-4.1.24/common/lib/servlet.jar:

メール送信を使わない、単なる JSP に対しては、きちんとコンパイル、表示はできるんですよね?

まずは、JavaMail の箇所をコメントアウトし、
単純構造にした上でコンパイル&示できることを確認してみてください。


> imap.jar
> mail.jar
> mailapi.jar
> pop3.jar
> smtp.jar
> activation.jar
>
> をJavaのディレクトリに置きクラスパスを通す。
>
> export CLASSPATH=$CLASSPATH:/usr/local/java/lib/imap.jar
> export CLASSPATH=$CLASSPATH:/usr/local/java/lib/mail.jar
> export CLASSPATH=$CLASSPATH:/usr/local/java/lib/mailapi.jar
> export CLASSPATH=$CLASSPATH:/usr/local/java/lib/pop3.jar
> export CLASSPATH=$CLASSPATH:/usr/local/java/lib/smtp.jar
> export CLASSPATH=$CLASSPATH:/usr/local/java/lib/activation.jar
>
> と入力して、tomcat,apacheを再起動してもmailが送信できません。
>
>
>
> org.apache.jasper.JasperException: JSPのクラスをコンパイルできません
>
> JSPファイル: /jsp/sendmail.jsp の中の行: 8でエラーが発生しました
>
> 生成されたサーブレットのエラーです:
> [javacハ Compiling 1 source file
>
> /usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:76: 文字列リテラルが閉じられていません。
> out.println("鐃緒?鐃緒申鐃緒申膀??鐃順?鐃?;
> ^
> JSPファイル: /jsp/sendmail.jsp の中の行: 8でエラーが発生しました
>
> 生成されたサーブレットのエラーです:
> /usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:77: ')' がありません。
> } catch (Exception e) {
> ^
> JSPファイル: /jsp/sendmail.jsp の中の行: 8でエラーが発生しました
>
> 生成されたサーブレットのエラーです:
> /usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:78: 文字列リテラルが閉じられていません。
> out.println("鐃緒?鐃緒申鐃緒申膀????申鐃?;
> ^
> JSPファイル: /jsp/sendmail.jsp の中の行: 8でエラーが発生しました
>
> 生成されたサーブレットのエラーです:
> /usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:79: ')' がありません。
>
>
> とエラーが表示されます。
> 以上のインストール方法であってるのでしょうか?
> 宜しくお願いします。


普通のJSPは表示できています。

No.15542 投稿時間:2004年04月05日(Mon) 21:52 投稿者名:TOMOMI URL:

> 帯鯖@名古屋です。
>
> メッセージを見る限り、言われる通りにカッコやダブルクォートが対応できていない気がします。
>
> import javax.mail.*;
> import javax.mail.internet.*;
>
> は大丈夫ですよね。
>
> ちなみに我が家の CLASSPATH (該当箇所のみ抜粋)です。
> 送受信できています。参考にしてください。
>
> # env | grep CLASSPATH
> CLASSPATH==.:
> /usr/java/j2sdk1.4.2/jre/lib:
> /usr/java/j2sdk1.4.2/lib:
> /usr/java/j2sdk1.4.2/lib/tools.jar:
> /usr/java/j2sdk1.4.2/lib/mail.jar:
> /usr/java/j2sdk1.4.2/lib/activation.jar:
> /usr/local/jakarta-tomcat-4.1.24/common/lib/servlet.jar:
>
> メール送信を使わない、単なる JSP に対しては、きちんとコンパイル、表示はできるんですよね?
>
> まずは、JavaMail の箇所をコメントアウトし、
> 単純構造にした上でコンパイル&示できることを確認してみてください。
>

返信ありがとうございます。
普通のJSPは表示できています。
ところで
> import javax.mail.*;
> import javax.mail.internet.*;
は何でしょうか?
また /usr/local/jakarta-tomcat-4.1.24/common/lib/servlet.jar:
サーブレットも必要なのでしょうか?

ちなみに、メール送信において、
メール記入(html)---OK
メール確認(jsp)---OK
メール送信(jsp)---error
となります。


J2EE の docs で確認を。

No.15545 投稿時間:2004年04月05日(Mon) 22:59 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

> ところで
> > import javax.mail.*;
> > import javax.mail.internet.*;
> は何でしょうか?

「J2EE のパッケージ javax.mail, javax.mail.internet のクラスを使います」という宣言(インポート)です。
# インポートすることでそれらのクラスに含まれるメソッドが使えるようになるというのは、J2EE に限らず、Java の基礎ですね。

具体的に述べると、POP, SMTP を使うには、サーバを指定し、プロトコルを指定し、セッションを張り、
SMTP の場合は MIME を指定し、宛先や件名、本文を与えるなど、一連の実装が必要です。
javax.mail, javax.mail.internet 内のクラスに、それらのメソッドが含まれています。

servlet.jar については、サーブレットに必需なコンテナです。
Tomcat が標準でサポートしている JSP コンテナとはまた別ですが、CLASSPATH へ通しておけば、
サーブレット/JSP の隔たりのない開発が可能です。ぜひ設定しておきましょう。

複雑なロジック処理を経る "中間的な" クラスは、作成面や管理面から、
サーブレットの方が適していると思います。


> > 帯鯖@名古屋です。
> >
> > メッセージを見る限り、言われる通りにカッコやダブルクォートが対応できていない気がします。
> >
> > import javax.mail.*;
> > import javax.mail.internet.*;
> >
> > は大丈夫ですよね。
> >
> > ちなみに我が家の CLASSPATH (該当箇所のみ抜粋)です。
> > 送受信できています。参考にしてください。
> >
> > # env | grep CLASSPATH
> > CLASSPATH==.:
> > /usr/java/j2sdk1.4.2/jre/lib:
> > /usr/java/j2sdk1.4.2/lib:
> > /usr/java/j2sdk1.4.2/lib/tools.jar:
> > /usr/java/j2sdk1.4.2/lib/mail.jar:
> > /usr/java/j2sdk1.4.2/lib/activation.jar:
> > /usr/local/jakarta-tomcat-4.1.24/common/lib/servlet.jar:
> >
> > メール送信を使わない、単なる JSP に対しては、きちんとコンパイル、表示はできるんですよね?
> >
> > まずは、JavaMail の箇所をコメントアウトし、
> > 単純構造にした上でコンパイル&示できることを確認してみてください。
> >
>
> 返信ありがとうございます。
> 普通のJSPは表示できています。
> ところで
> > import javax.mail.*;
> > import javax.mail.internet.*;
> は何でしょうか?
> また /usr/local/jakarta-tomcat-4.1.24/common/lib/servlet.jar:
> サーブレットも必要なのでしょうか?
>
> ちなみに、メール送信において、
> メール記入(html)---OK
> メール確認(jsp)---OK
> メール送信(jsp)---error
> となります。


J2EEのパッケージとservlet.jarをインストールする必要があるということですね?

No.15546 投稿時間:2004年04月05日(Mon) 23:50 投稿者名:TOMOMI URL:

> 帯鯖@名古屋です。
>
> > ところで
> > > import javax.mail.*;
> > > import javax.mail.internet.*;
> > は何でしょうか?
>
> 「J2EE のパッケージ javax.mail, javax.mail.internet のクラスを使います」という宣言(インポート)です。
> # インポートすることでそれらのクラスに含まれるメソッドが使えるようになるというのは、J2EE に限らず、Java の基礎ですね。
>
> 具体的に述べると、POP, SMTP を使うには、サーバを指定し、プロトコルを指定し、セッションを張り、
> SMTP の場合は MIME を指定し、宛先や件名、本文を与えるなど、一連の実装が必要です。
> javax.mail, javax.mail.internet 内のクラスに、それらのメソッドが含まれています。
>
> servlet.jar については、サーブレットに必需なコンテナです。
> Tomcat が標準でサポートしている JSP コンテナとはまた別ですが、CLASSPATH へ通しておけば、
> サーブレット/JSP の隔たりのない開発が可能です。ぜひ設定しておきましょう。
>
> 複雑なロジック処理を経る "中間的な" クラスは、作成面や管理面から、
> サーブレットの方が適していると思います。
>

すいません説明の仕方が悪かったようでした。
javax.mail.*;
javax.mail.internet.*;
はJ2EEなんですね。

しかし、購入した本や、HPを拝見したところでは、
imap.jar
mail.jar
mailapi.jar
pop3.jar
smtp.jar
activation.jar
を配置して、再起動すればよいとかかれてあったのですが、やはり無理なのですね。
となると、J2EE のパッケージ と servlet.jar をインストールする必要があるということですね?


ぜひ、もう1歩踏み込んでみましょう!

No.15548 投稿時間:2004年04月06日(Tue) 00:53 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

J2EE については、その通りです。

ちょっと話はそれますが…

> ちなみに、メール送信において、
> メール記入(html)---OK
> メール確認(jsp)---OK
> メール送信(jsp)---error
> となります。

この設計を見て「素晴らしいな」と思いました。

どこが素晴らしいかといえば、JSP, サーブレットにおいて難題である入力データのチェックを
記入画面(html)から確認画面(JSP#1)の間で踏ませていることですね。
この過程でエラーを検出した場合、処理の中心となる SMTP 処理は行なわれずに済みます。
もし掲示板のようなマスタ型(データ蓄積型)の場合であれば、書き込み処理を開始せずに済むことから、
マスタの状態を崩すことはないというわけです。

そして、入力データにエラーがないと保証されたうえで次へ進めるわけですから、
SMTP あるいはマスタへの書込みなどの本髄的なロジックでの処理エラーは歴然と少なくなり、
また、ロジックが正常終了する確立も、非常に高くなります。


ここで、もう一歩進んで考えてみましょう。

理屈をこねると長くなりますが。

Java はオブジェクト指向言語ですよね。
例えば、他の JSP からもメール送信をしたいなと考えた場合、次はどのように組み上げるでしょうか?
同じロジックを2つ作るのは、時間と労力と資源のムダです。Java の利点を使えず終いです。

せっかく確認画面と送信画面の分離を行なっているのでしたら、
メール送信の機能を持つクラスを、画面表示機能を持たない、"SMTP 専門" の内部ロジックとして独立させ、
送信結果を示す JSP#2 の最初の過程で JavaBean あるいはインスタンスとして呼び出し、
引数付きで処理させればよいのではないでしょうか?

そうすれば、入力エラーによるアプリ暴走やデータ損失を防げるのはもちろん、
他の JSP からの資源再利用も可能になるという、強靭なサーバサイドアプリを作り上げることができます。


この辺りの設計思想のキーワードは「オブジェクト指向」「UMLモデリング」です。
私も未だに上手く設計できませんが、理解と実践ができれば、プロ顔負けの一線級です。

ご参考までに。


> > 帯鯖@名古屋です。
> >
> > > ところで
> > > > import javax.mail.*;
> > > > import javax.mail.internet.*;
> > > は何でしょうか?
> >
> > 「J2EE のパッケージ javax.mail, javax.mail.internet のクラスを使います」という宣言(インポート)です。
> > # インポートすることでそれらのクラスに含まれるメソッドが使えるようになるというのは、J2EE に限らず、Java の基礎ですね。
> >
> > 具体的に述べると、POP, SMTP を使うには、サーバを指定し、プロトコルを指定し、セッションを張り、
> > SMTP の場合は MIME を指定し、宛先や件名、本文を与えるなど、一連の実装が必要です。
> > javax.mail, javax.mail.internet 内のクラスに、それらのメソッドが含まれています。
> >
> > servlet.jar については、サーブレットに必需なコンテナです。
> > Tomcat が標準でサポートしている JSP コンテナとはまた別ですが、CLASSPATH へ通しておけば、
> > サーブレット/JSP の隔たりのない開発が可能です。ぜひ設定しておきましょう。
> >
> > 複雑なロジック処理を経る "中間的な" クラスは、作成面や管理面から、
> > サーブレットの方が適していると思います。
> >
>
> すいません説明の仕方が悪かったようでした。
> javax.mail.*;
> javax.mail.internet.*;
> はJ2EEなんですね。
>
> しかし、購入した本や、HPを拝見したところでは、
> imap.jar
> mail.jar
> mailapi.jar
> pop3.jar
> smtp.jar
> activation.jar
> を配置して、再起動すればよいとかかれてあったのですが、やはり無理なのですね。
> となると、J2EE のパッケージ と servlet.jar をインストールする必要があるということですね?


おかしいですね。

No.15557 投稿時間:2004年04月06日(Tue) 15:38 投稿者名:TOMOMI URL:

おかしいですね。

import javax.mail.*;
import javax.mail.internet.*;

をして、

CLASSPATH==.:
/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/common/lib/servlet.jar:

を追加しても
メール記入(html)---OK
メール確認(jsp)---OK
メール送信(jsp)---error
のままでした。

ちなみに、

メール記入(html)--日本語OK
メール確認(jsp)---日本語文字化け
メール送信(jsp)---送信エラー

となっています。日本語文字化けは後で解決しようと思っていたのですが、
これが原因なんでしょうか?

> 帯鯖@名古屋です。
>
> J2EE については、その通りです。
>
> ちょっと話はそれますが…
>
> > ちなみに、メール送信において、
> > メール記入(html)---OK
> > メール確認(jsp)---OK
> > メール送信(jsp)---error
> > となります。
>
> この設計を見て「素晴らしいな」と思いました。
>
> どこが素晴らしいかといえば、JSP, サーブレットにおいて難題である入力データのチェックを
> 記入画面(html)から確認画面(JSP#1)の間で踏ませていることですね。
> この過程でエラーを検出した場合、処理の中心となる SMTP 処理は行なわれずに済みます。
> もし掲示板のようなマスタ型(データ蓄積型)の場合であれば、書き込み処理を開始せずに済むことから、
> マスタの状態を崩すことはないというわけです。
>
> そして、入力データにエラーがないと保証されたうえで次へ進めるわけですから、
> SMTP あるいはマスタへの書込みなどの本髄的なロジックでの処理エラーは歴然と少なくなり、
> また、ロジックが正常終了する確立も、非常に高くなります。
>
>
> ここで、もう一歩進んで考えてみましょう。
>
> 理屈をこねると長くなりますが。
>
> Java はオブジェクト指向言語ですよね。
> 例えば、他の JSP からもメール送信をしたいなと考えた場合、次はどのように組み上げるでしょうか?
> 同じロジックを2つ作るのは、時間と労力と資源のムダです。Java の利点を使えず終いです。
>
> せっかく確認画面と送信画面の分離を行なっているのでしたら、
> メール送信の機能を持つクラスを、画面表示機能を持たない、"SMTP 専門" の内部ロジックとして独立させ、
> 送信結果を示す JSP#2 の最初の過程で JavaBean あるいはインスタンスとして呼び出し、
> 引数付きで処理させればよいのではないでしょうか?
>
> そうすれば、入力エラーによるアプリ暴走やデータ損失を防げるのはもちろん、
> 他の JSP からの資源再利用も可能になるという、強靭なサーバサイドアプリを作り上げることができます。
>
>
> この辺りの設計思想のキーワードは「オブジェクト指向」「UMLモデリング」です。
> 私も未だに上手く設計できませんが、理解と実践ができれば、プロ顔負けの一線級です。
>
> ご参考までに。
>
>


一歩ずつ切り分けましょう。

No.15569 投稿時間:2004年04月07日(Wed) 00:22 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

メール送信過程(サーバコネクションなど)で失敗するのではなく、
JSP コンパイルで失敗するのですよね?

正確な切り分けをしながら、一歩ずつ進みましょうか。

1. J2EE パッケージの不足?

下記ソースをコピーし、手動コンパイルしてみてください。

$ cat MailTest.java

import javax.mail.*;
import javax.mail.internet.*;

public class MailTest {

public static void main(String args[ハ) {

System.out.println("HELLO!");

}

}

これにより、J2EE パッケージが正常に導入されているかの判断ができます。


2. コンパイルが通らない場合、オプションに-classpath を付けて、1. のソースをコンパイルしてみてください。

ここで通れば、CLASSPATH の設定ミスであることがわかります。


3. (2. までできたら)1. のソースに具体的な実装をしてみる

import java.util.*; を追加し、main メソッド内に下記ロジックを実装

try {

/* プロパティ作成 */
Properties properties = System.getProperties();
System.out.println("aaa");

/* サーバ定義 */
properties.put("mail.smtp.host","xxx.xxx.xxx.xxx");
// xxx.xxx.xxx.xxx には、SMTP サーバの IP アドレスを指定する
System.out.println("bbb");

/* セッション定義 */
Session session = Session.getDefaultInstance(properties, null);
System.out.println("ccc");

/* MIME 定義 */
MimeMessage mimeMessage = new MimeMessage(session);
System.out.println("ddd");

} catch (Exception e) {
e.printStackTrace();
}

これだけでは実行できませんが、ここまででコンパイルが通れば
インフラ的な要因を視野に入れる必要が出てきます。


JavaMail を用いたメール送受信は、ほとんど決まり文句の要素で構成されます。
まずはここまでやってみれば、およその原因を絞りきれると思います。



> おかしいですね。
>
> import javax.mail.*;
> import javax.mail.internet.*;
>
> をして、
>
> CLASSPATH==.:
> /usr/local/jakarta-tomcat-4.1.27-LE-jdk14/common/lib/servlet.jar:
>
> を追加しても
> メール記入(html)---OK
> メール確認(jsp)---OK
> メール送信(jsp)---error
> のままでした。
>
> ちなみに、
>
> メール記入(html)--日本語OK
> メール確認(jsp)---日本語文字化け
> メール送信(jsp)---送信エラー
>
> となっています。日本語文字化けは後で解決しようと思っていたのですが、
> これが原因なんでしょうか?
>
> > 帯鯖@名古屋です。
> >
> > J2EE については、その通りです。
> >
> > ちょっと話はそれますが…
> >
> > > ちなみに、メール送信において、
> > > メール記入(html)---OK
> > > メール確認(jsp)---OK
> > > メール送信(jsp)---error
> > > となります。
> >
> > この設計を見て「素晴らしいな」と思いました。
> >
> > どこが素晴らしいかといえば、JSP, サーブレットにおいて難題である入力データのチェックを
> > 記入画面(html)から確認画面(JSP#1)の間で踏ませていることですね。
> > この過程でエラーを検出した場合、処理の中心となる SMTP 処理は行なわれずに済みます。
> > もし掲示板のようなマスタ型(データ蓄積型)の場合であれば、書き込み処理を開始せずに済むことから、
> > マスタの状態を崩すことはないというわけです。
> >
> > そして、入力データにエラーがないと保証されたうえで次へ進めるわけですから、
> > SMTP あるいはマスタへの書込みなどの本髄的なロジックでの処理エラーは歴然と少なくなり、
> > また、ロジックが正常終了する確立も、非常に高くなります。
> >
> >
> > ここで、もう一歩進んで考えてみましょう。
> >
> > 理屈をこねると長くなりますが。
> >
> > Java はオブジェクト指向言語ですよね。
> > 例えば、他の JSP からもメール送信をしたいなと考えた場合、次はどのように組み上げるでしょうか?
> > 同じロジックを2つ作るのは、時間と労力と資源のムダです。Java の利点を使えず終いです。
> >
> > せっかく確認画面と送信画面の分離を行なっているのでしたら、
> > メール送信の機能を持つクラスを、画面表示機能を持たない、"SMTP 専門" の内部ロジックとして独立させ、
> > 送信結果を示す JSP#2 の最初の過程で JavaBean あるいはインスタンスとして呼び出し、
> > 引数付きで処理させればよいのではないでしょうか?
> >
> > そうすれば、入力エラーによるアプリ暴走やデータ損失を防げるのはもちろん、
> > 他の JSP からの資源再利用も可能になるという、強靭なサーバサイドアプリを作り上げることができます。
> >
> >
> > この辺りの設計思想のキーワードは「オブジェクト指向」「UMLモデリング」です。
> > 私も未だに上手く設計できませんが、理解と実践ができれば、プロ顔負けの一線級です。
> >
> > ご参考までに。
> >
> >


メール送信だけが、文字化けします。

No.15587 投稿時間:2004年04月07日(Wed) 09:30 投稿者名:TOMOMI URL:

こんなに説明して頂いて、申し訳ありません。
私の力不足でよくわかりません。
本をみながら、jspソースもCDに入っていました。

しかしほかのjspは文字化けもなくきちんと表示されています。
メール送信だけが、文字化けします。
文頭にShift_JISを入れても無理でした。

こんなことってあるんでしょうか?


> 帯鯖@名古屋です。
>
> メール送信過程(サーバコネクションなど)で失敗するのではなく、
> JSP コンパイルで失敗するのですよね?
>
> 正確な切り分けをしながら、一歩ずつ進みましょうか。
>
> 1. J2EE パッケージの不足?
>
> 下記ソースをコピーし、手動コンパイルしてみてください。
>
> $ cat MailTest.java
>
> import javax.mail.*;
> import javax.mail.internet.*;
>
> public class MailTest {
>
> public static void main(String args[ハ) {
>
> System.out.println("HELLO!");
>
> }
>
> }
>
> これにより、J2EE パッケージが正常に導入されているかの判断ができます。
>
>
> 2. コンパイルが通らない場合、オプションに-classpath を付けて、1. のソースをコンパイルしてみてください。
>
> ここで通れば、CLASSPATH の設定ミスであることがわかります。
>
>
> 3. (2. までできたら)1. のソースに具体的な実装をしてみる
>
> import java.util.*; を追加し、main メソッド内に下記ロジックを実装
>
> try {
>
> /* プロパティ作成 */
> Properties properties = System.getProperties();
> System.out.println("aaa");
>
> /* サーバ定義 */
> properties.put("mail.smtp.host","xxx.xxx.xxx.xxx");
> // xxx.xxx.xxx.xxx には、SMTP サーバの IP アドレスを指定する
> System.out.println("bbb");
>
> /* セッション定義 */
> Session session = Session.getDefaultInstance(properties, null);
> System.out.println("ccc");
>
> /* MIME 定義 */
> MimeMessage mimeMessage = new MimeMessage(session);
> System.out.println("ddd");
>
> } catch (Exception e) {
> e.printStackTrace();
> }
>
> これだけでは実行できませんが、ここまででコンパイルが通れば
> インフラ的な要因を視野に入れる必要が出てきます。
>
>
> JavaMail を用いたメール送受信は、ほとんど決まり文句の要素で構成されます。
> まずはここまでやってみれば、およその原因を絞りきれると思います。
>
>


サーバ状況を記述します。

No.15591 投稿時間:2004年04月07日(Wed) 14:48 投稿者名:TOMOMI URL:

サーバ状況を記述します。

j2sdk1.4.2
tomcat+apache
apache-ant-1.6.1
jaf-1.0.2
javamail-1.3

activation.jarとmail.jarを
usr/local/j2sdk1.4.2/lib/

servlet.jarを
usr/local/jakarta-tomcat-4.1.27-LE-jdk14/common/lib/servlet.jar
に置いてます。

検索したHPによっては、/WEB-INF/lib か、
$CATALINA_HOME/common/lib か、$JAVA_HOME/jre/lib/ext
と色々かかれてあるので、どれが正解かわかりません。
また「モノによってはこれらの複数のディレクトリにおくとうまく動かなかったり、
このうちのどこに置くか決まっていたりするようで、
ドキュメントでしっかり確認した方がいいと思います。」
ともかかれています。環境によって、違うのでしょうか?


JSPはコンパイルは不要じゃないんですか?

No.15592 投稿時間:2004年04月07日(Wed) 15:19 投稿者名:TOMOMI URL:

すいません、コンパイルと書かれてありましたが、
JSPはコンパイルは不要じゃないんですか?


.java から .class を作り、手動でロードしてみましょう。

No.15598 投稿時間:2004年04月07日(Wed) 22:20 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

> 本をみながら、jspソースもCDに入っていました。
>
> しかしほかのjspは文字化けもなくきちんと表示されています。
> メール送信だけが、文字化けします。
> 文頭にShift_JISを入れても無理でした。
>
> こんなことってあるんでしょうか?

あります。

どのように文字化けしているか察しかねますが。

全体的に化けているのでしたら、ファイルの文字コードが違う可能性があります。
また、入力された箇所だけ部分的に化けているのでしたら、UNICODE で扱われる JSP コンテナを
経由することによるものだと考えられます。


後者の場合、下記の方法で手っ取り早く修復できます。

request.setCharacterEncoding("Windows-31J");

しかしこの方法は、あくまで "表示を直す" のみの対応であるため、
例えばDBなど文字コード系に依存するミドルウェアへは完全に対応できません。


> 検索したHPによっては、/WEB-INF/lib か、
> $CATALINA_HOME/common/lib か、$JAVA_HOME/jre/lib/ext
> と色々かかれてあるので、どれが正解かわかりません。
> また「モノによってはこれらの複数のディレクトリにおくとうまく動かなかったり、
> このうちのどこに置くか決まっていたりするようで、
> ドキュメントでしっかり確認した方がいいと思います。」
> ともかかれています。環境によって、違うのでしょうか?

CLASSPATH で対応できる *.jar については、
仕組み上、CLASSPATH さえ通っていれば、どこに置いても使えます。

# 私はたまに、とある .jar だけテンポラリにコピーして
# $ setenv で暫定的に CLASSPATH を通して、とりあえず使うこともあります。


> すいません、コンパイルと書かれてありましたが、
> JSPはコンパイルは不要じゃないんですか?

説明が足りませんでした。
今回のように J2EE に依存しているかを確認をしたい場合、コンテナ経由でなくても下記フローにて可能です。

1. .java を手動コンパイルし、.class を作る。 $ javac _____.java で。
2. .class をロードする。 $ java _____.class で。

JavaMail も例外でなく、上記方法にて手動ロードが可能です。
私としては、この結果に非常に興味があるところです。


【誤記】 java のロード方法

No.15599 投稿時間:2004年04月07日(Wed) 22:24 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

> 1. .java を手動コンパイルし、.class を作る。 $ javac _____.java で。
> 2. .class をロードする。 $ java _____.class で。

2. のロード方法は、$ java ______ ですね。

いつも、基礎的なところで気が抜けるなぁ。


文字化けは全体に及んでいます。タイトルバーまでにです。

No.15600 投稿時間:2004年04月07日(Wed) 22:56 投稿者名:TOMOMI URL:

たびたびありがとうございます。
あいにく文字化けは全体に及んでいます。タイトルバーまでにです。
しかし、いろいろいじっていると、何も表示されなくなりました。真っ白です。もうよくわかりません・・・。

そして、ソースをテキストで開いて、<%@ page contentType="text/html;charset=Shift_JIS"を挿入して保存すると、
エラーが表示されました。踏んだりけったりです。
ソースをテキストで開いて保存すると、データが壊れるみたいです。

ソースは全部本から抜粋してきました。

メール記入(html)
メール確認(jsp)
メール送信(jsp)

メール確認(jsp)を以下に表示します。
ちなみに以下のソースはJIS用です。EUCだと文字化けするので・・・。日本語以外は同じでした。


<html>
<head>
<title>メール送信フォーム</title>
</head>
<body>
<h2>メール送信内容確認画面</h2>
<%
//フォームの値を取得
String mName = request.getParameter("name");
String mFrom = request.getParameter("from");
String mTitle = request.getParameter("title");
String mNaiyou = request.getParameter("naiyou");

//値をチェック
boolean mErrFlg = false;
if (mName.equals("")) {
out.println("<p>お名前を入力してください。");
mErrFlg = true;
}
if (mFrom.equals("")) {
out.println("<p>メールアドレスを入力してください。");
mErrFlg = true;
}
if (mTitle.equals("")) {
out.println("<p>タイトルを入力してください。");
mErrFlg = true;
}
if (mNaiyou.equals("")) {
out.println("<p>内容を入力してください。");
mErrFlg = true;
}

if (mErrFlg == false) {
%>
<h2>内容を確認して送信ボタンをクリックしてください
<form method="POST" action="sendmail.jsp">
<table border="0">
<tr>
<td width="100">お名前</td>
<td width="300"><%=mName%></td>
</tr>
<tr>
<td width="100">メールアドレス</td>
<td width="300"><%=mFrom%></td>
</tr>
<tr>
<td width="100">メールタイトル</td>
<td width="300"><%=mTitle%></td>
</tr>
<tr>
<td width="100">メッセージ</td>
<td width="300"><%=mNaiyou%></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="送信"></td>
</tr>
</table>
<input type="hidden" name="name" value="<%= mName %>">
<input type="hidden" name="from" value="<%= mFrom %>">
<input type="hidden" name="title" value="<%= mTitle %>">
<input type="hidden" name="naiyou" value="<%= mNaiyou %>">
</form>
<% } %>
</body>
</html>


メール送信(jsp)を以下に表示します。



<%@ page contentType="text/html;charset=Shift_JIS"
import="java.util.*,javax.mail.*,javax.mail.internet.*" %>
<html>
<head>
<title>メール送信フォーム</title>
</head>
<body>
<h2>メール送信完了</h2>
<%
//送信設定(SMTP、送信先)
String mSv = "127.0.0.1";
String mTo = "xxx@xxx.xxx";

//フォームの値を取得
String mName = request.getParameter("name");
String mFrom = request.getParameter("from");
String mTitle = request.getParameter("title");
String mNaiyou = request.getParameter("naiyou");
String mBd = new String(mNaiyou.getBytes("8859_1"), "JISAutoDetect");

try {
//MimeMessageオブジェクトの生成
Properties p = new Properties();
p.put("mail.smtp.host",mSv);
Session s = Session.getDefaultInstance(p, null);
MimeMessage mim = new MimeMessage(s);

//送信元、送信先の設定
mim.setFrom(new InternetAddress(mFrom, mName, "iso-2022-jp"));
mim.setRecipients(Message.RecipientType.TO, mTo);

//送信内容の設定
mim.setSubject(mTitle, "iso-2022-jp");
mim.setText(mBd, "iso-2022-jp");

//メール送信
Transport.send(mim);
out.println("メール送信完了");
} catch (Exception e) {
out.println("メール送信失敗");
}
%>
</body>
</html>


JSPは手動コンパイルしてもそのままおいてもOKなんですよね?
しかしWindowsのtextでつくったjspをlinuxに配置しようと思ったら、そのままでは無理なんでしょうか?
ほかのjspはちゃんと動いているので、恐らく文字化けが悪さして、エラーに及んでいるものと思われます。(素人判断)
ほかのjspはちゃんと動いているということは、*.jarが悪いんでしょうか?(素人判断)

宜しくおねがいします。


> 帯鯖@名古屋です。
>
> > 本をみながら、jspソースもCDに入っていました。
> >
> > しかしほかのjspは文字化けもなくきちんと表示されています。
> > メール送信だけが、文字化けします。
> > 文頭にShift_JISを入れても無理でした。
> >
> > こんなことってあるんでしょうか?
>
> あります。
>
> どのように文字化けしているか察しかねますが。
>
> 全体的に化けているのでしたら、ファイルの文字コードが違う可能性があります。
> また、入力された箇所だけ部分的に化けているのでしたら、UNICODE で扱われる JSP コンテナを
> 経由することによるものだと考えられます。
>
>
> 後者の場合、下記の方法で手っ取り早く修復できます。
>
> request.setCharacterEncoding("Windows-31J");
>
> しかしこの方法は、あくまで "表示を直す" のみの対応であるため、
> 例えばDBなど文字コード系に依存するミドルウェアへは完全に対応できません。
>
>
> > 検索したHPによっては、/WEB-INF/lib か、
> > $CATALINA_HOME/common/lib か、$JAVA_HOME/jre/lib/ext
> > と色々かかれてあるので、どれが正解かわかりません。
> > また「モノによってはこれらの複数のディレクトリにおくとうまく動かなかったり、
> > このうちのどこに置くか決まっていたりするようで、
> > ドキュメントでしっかり確認した方がいいと思います。」
> > ともかかれています。環境によって、違うのでしょうか?
>
> CLASSPATH で対応できる *.jar については、
> 仕組み上、CLASSPATH さえ通っていれば、どこに置いても使えます。
>
> # 私はたまに、とある .jar だけテンポラリにコピーして
> # $ setenv で暫定的に CLASSPATH を通して、とりあえず使うこともあります。
>
>
> > すいません、コンパイルと書かれてありましたが、
> > JSPはコンパイルは不要じゃないんですか?
>
> 説明が足りませんでした。
> 今回のように J2EE に依存しているかを確認をしたい場合、コンテナ経由でなくても下記フローにて可能です。
>
> 1. .java を手動コンパイルし、.class を作る。 $ javac _____.java で。
> 2. .class をロードする。 $ java _____.class で。
>
> JavaMail も例外でなく、上記方法にて手動ロードが可能です。
> 私としては、この結果に非常に興味があるところです。


まずは、提案した「切り分けテスト」を実施してください。

No.15603 投稿時間:2004年04月08日(Thu) 01:53 投稿者名:帯鯖 URL:

帯鯖@名古屋です。


> JSPは手動コンパイルしてもそのままおいてもOKなんですよね?

ちょっと意味が違います。。。
JSP は、コンテナへ乗せる段階に、自動的にコンパイルされます。
コンパイルは、コンテナ任せでよいです。

試して欲しいのは、main メソッドを使った、.java および .class の、単体 "アプリケーション" のことです。


> しかしWindowsのtextでつくったjspをlinuxに配置しようと思ったら、そのままでは無理なんでしょうか?

無理ではありません。
コンパイラはシフト JIS にも対応できますし、改行コードの差異も取り除いてくれます。


正直なところ、私の方では未だ根本原因を掴めていません。

どのような症状が出ているのかを具体的に示して頂かないことには、コードの開示を頂いても、そのコードチェックぐらいしかできません。
こちらの環境でも動かしてみたいところですが、環境が全く一致でない以上、TOMOMI さん側の環境設定までは検知できないはずです。

そのためには、まず No.15569, 15598 で提案した切り分けテストの結果を教えてください。


> たびたびありがとうございます。
> あいにく文字化けは全体に及んでいます。タイトルバーまでにです。
> しかし、いろいろいじっていると、何も表示されなくなりました。真っ白です。もうよくわかりません・・・。
>
> そして、ソースをテキストで開いて、<%@ page contentType="text/html;charset=Shift_JIS"を挿入して保存すると、
> エラーが表示されました。踏んだりけったりです。
> ソースをテキストで開いて保存すると、データが壊れるみたいです。
>
> ソースは全部本から抜粋してきました。
>
> メール記入(html)
> メール確認(jsp)
> メール送信(jsp)
> の
> メール確認(jsp)を以下に表示します。
> ちなみに以下のソースはJIS用です。EUCだと文字化けするので・・・。日本語以外は同じでした。
>
>
> <html>
> <head>
> <title>メール送信フォーム</title>
> </head>
> <body>
> <h2>メール送信内容確認画面</h2>
> <%
> //フォームの値を取得
> String mName = request.getParameter("name");
> String mFrom = request.getParameter("from");
> String mTitle = request.getParameter("title");
> String mNaiyou = request.getParameter("naiyou");
>
> //値をチェック
> boolean mErrFlg = false;
> if (mName.equals("")) {
> out.println("<p>お名前を入力してください。");
> mErrFlg = true;
> }
> if (mFrom.equals("")) {
> out.println("<p>メールアドレスを入力してください。");
> mErrFlg = true;
> }
> if (mTitle.equals("")) {
> out.println("<p>タイトルを入力してください。");
> mErrFlg = true;
> }
> if (mNaiyou.equals("")) {
> out.println("<p>内容を入力してください。");
> mErrFlg = true;
> }
>
> if (mErrFlg == false) {
> %>
> <h2>内容を確認して送信ボタンをクリックしてください
> <form method="POST" action="sendmail.jsp">
> <table border="0">
> <tr>
> <td width="100">お名前</td>
> <td width="300"><%=mName%></td>
> </tr>
> <tr>
> <td width="100">メールアドレス</td>
> <td width="300"><%=mFrom%></td>
> </tr>
> <tr>
> <td width="100">メールタイトル</td>
> <td width="300"><%=mTitle%></td>
> </tr>
> <tr>
> <td width="100">メッセージ</td>
> <td width="300"><%=mNaiyou%></td>
> </tr>
> <tr>
> <td colspan="2"><input type="submit" value="送信"></td>
> </tr>
> </table>
> <input type="hidden" name="name" value="<%= mName %>">
> <input type="hidden" name="from" value="<%= mFrom %>">
> <input type="hidden" name="title" value="<%= mTitle %>">
> <input type="hidden" name="naiyou" value="<%= mNaiyou %>">
> </form>
> <% } %>
> </body>
> </html>
>
>
> メール送信(jsp)を以下に表示します。
>
>
>
> <%@ page contentType="text/html;charset=Shift_JIS"
> import="java.util.*,javax.mail.*,javax.mail.internet.*" %>
> <html>
> <head>
> <title>メール送信フォーム</title>
> </head>
> <body>
> <h2>メール送信完了</h2>
> <%
> //送信設定(SMTP、送信先)
> String mSv = "127.0.0.1";
> String mTo = "xxx@xxx.xxx";
>
> //フォームの値を取得
> String mName = request.getParameter("name");
> String mFrom = request.getParameter("from");
> String mTitle = request.getParameter("title");
> String mNaiyou = request.getParameter("naiyou");
> String mBd = new String(mNaiyou.getBytes("8859_1"), "JISAutoDetect");
>
> try {
> //MimeMessageオブジェクトの生成
> Properties p = new Properties();
> p.put("mail.smtp.host",mSv);
> Session s = Session.getDefaultInstance(p, null);
> MimeMessage mim = new MimeMessage(s);
>
> //送信元、送信先の設定
> mim.setFrom(new InternetAddress(mFrom, mName, "iso-2022-jp"));
> mim.setRecipients(Message.RecipientType.TO, mTo);
>
> //送信内容の設定
> mim.setSubject(mTitle, "iso-2022-jp");
> mim.setText(mBd, "iso-2022-jp");
>
> //メール送信
> Transport.send(mim);
> out.println("メール送信完了");
> } catch (Exception e) {
> out.println("メール送信失敗");
> }
> %>
> </body>
> </html>
>
>
> JSPは手動コンパイルしてもそのままおいてもOKなんですよね?
> しかしWindowsのtextでつくったjspをlinuxに配置しようと思ったら、そのままでは無理なんでしょうか?
> ほかのjspはちゃんと動いているので、恐らく文字化けが悪さして、エラーに及んでいるものと思われます。(素人判断)
> ほかのjspはちゃんと動いているということは、*.jarが悪いんでしょうか?(素人判断)
>
> 宜しくおねがいします。
>
>
> > 帯鯖@名古屋です。
> >
> > > 本をみながら、jspソースもCDに入っていました。
> > >
> > > しかしほかのjspは文字化けもなくきちんと表示されています。
> > > メール送信だけが、文字化けします。
> > > 文頭にShift_JISを入れても無理でした。
> > >
> > > こんなことってあるんでしょうか?
> >
> > あります。
> >
> > どのように文字化けしているか察しかねますが。
> >
> > 全体的に化けているのでしたら、ファイルの文字コードが違う可能性があります。
> > また、入力された箇所だけ部分的に化けているのでしたら、UNICODE で扱われる JSP コンテナを
> > 経由することによるものだと考えられます。
> >
> >
> > 後者の場合、下記の方法で手っ取り早く修復できます。
> >
> > request.setCharacterEncoding("Windows-31J");
> >
> > しかしこの方法は、あくまで "表示を直す" のみの対応であるため、
> > 例えばDBなど文字コード系に依存するミドルウェアへは完全に対応できません。
> >
> >
> > > 検索したHPによっては、/WEB-INF/lib か、
> > > $CATALINA_HOME/common/lib か、$JAVA_HOME/jre/lib/ext
> > > と色々かかれてあるので、どれが正解かわかりません。
> > > また「モノによってはこれらの複数のディレクトリにおくとうまく動かなかったり、
> > > このうちのどこに置くか決まっていたりするようで、
> > > ドキュメントでしっかり確認した方がいいと思います。」
> > > ともかかれています。環境によって、違うのでしょうか?
> >
> > CLASSPATH で対応できる *.jar については、
> > 仕組み上、CLASSPATH さえ通っていれば、どこに置いても使えます。
> >
> > # 私はたまに、とある .jar だけテンポラリにコピーして
> > # $ setenv で暫定的に CLASSPATH を通して、とりあえず使うこともあります。
> >
> >
> > > すいません、コンパイルと書かれてありましたが、
> > > JSPはコンパイルは不要じゃないんですか?
> >
> > 説明が足りませんでした。
> > 今回のように J2EE に依存しているかを確認をしたい場合、コンテナ経由でなくても下記フローにて可能です。
> >
> > 1. .java を手動コンパイルし、.class を作る。 $ javac _____.java で。
> > 2. .class をロードする。 $ java _____.class で。
> >
> > JavaMail も例外でなく、上記方法にて手動ロードが可能です。
> > 私としては、この結果に非常に興味があるところです。


OKでした。

No.15606 投稿時間:2004年04月08日(Thu) 13:08 投稿者名:TOMOMI URL:

No.15569, 15598 で提案した切り分けテストの結果は
OKでした。

aaa
bbb
ccc
ddd
Hello!
と表示されました。

ということはインフラ的な要因なんでしょうか?

> 帯鯖@名古屋です。
>
>
> > JSPは手動コンパイルしてもそのままおいてもOKなんですよね?
>
> ちょっと意味が違います。。。
> JSP は、コンテナへ乗せる段階に、自動的にコンパイルされます。
> コンパイルは、コンテナ任せでよいです。
>
> 試して欲しいのは、main メソッドを使った、.java および .class の、単体 "アプリケーション" のことです。
>
>
> > しかしWindowsのtextでつくったjspをlinuxに配置しようと思ったら、そのままでは無理なんでしょうか?
>
> 無理ではありません。
> コンパイラはシフト JIS にも対応できますし、改行コードの差異も取り除いてくれます。
>
>
> 正直なところ、私の方では未だ根本原因を掴めていません。
>
> どのような症状が出ているのかを具体的に示して頂かないことには、コードの開示を頂いても、そのコードチェックぐらいしかできません。
> こちらの環境でも動かしてみたいところですが、環境が全く一致でない以上、TOMOMI さん側の環境設定までは検知できないはずです。
>
> そのためには、まず No.15569, 15598 で提案した切り分けテストの結果を教えてください。
>


メール送信は駄目でした。。。

No.15612 投稿時間:2004年04月08日(Thu) 18:49 投稿者名:TOMOMI URL:

切り分けテストはOKでしたが、メール送信は駄目でした。。。


どのようにダメなんですか?

No.15613 投稿時間:2004年04月08日(Thu) 20:47 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

およそ絞れてきました。

が、、、

一番最初の投稿時は、JSP のコンパイルでNGだったわけですよね?
現段階において、15600 の JSP 画面にアクセスした場合、

・ まだコンパイルが通らない
・「メール送信成功」のルーチンへ達するが、メールサーバ(127.0.0.1)に送信ログがない
・「メール送信失敗」のルーチンを通ってしまう

など、どのような症例が出るのですか?

メールが送信できないのは分かりますが、そこで、"どのような" エラーが発生しているのかがいつも分かりません。
厳しく言うようですが、「○○を行なったところ、○○に○○の表示が出た。△△に、△△というエラーログが記載された。」
のように、デバッグを挟むなどして、症状箇所を明確に示してください。


SMTP サーバは立っていますよね?
SMTP サーバに対し、127.0.0.1 からの許可はされていますか?
メールサーバへ到達していますか?
メールサーバは、554 の応答を返していないですか?

ひとつでも×が付けば、相手側での受信はできません。


以上2点、切り分けを実施してください。


> 切り分けテストはOKでしたが、メール送信は駄目でした。。。


当初のメール確認(jsp)で文字化け状態で、送信ボタンを押すと、この画面でエラーが起こっていました。

No.15614 投稿時間:2004年04月08日(Thu) 21:26 投稿者名:TOMOMI URL:

○メール記入(html)

これは日本語もちゃんと表示され次のjspまでいくことができます。

○メール確認(jsp)

ここで、当初の表示は文字化けだったのですが、
いろいろしているうちに真っ白画面になりました。
文字のエンコードをしても真っ白でした。

○メール送信(jsp)

当初のメール確認(jsp)で文字化け状態で、送信ボタンを押すと、この画面でエラーが起こっていました。
が、今はこの画面まで行けません。

メールサーバはプロバイダのメールサーバを入力しています。
ので、xxx.xxx.xxx.xxxはxxx.xxx.ne.jpとなっています。

SMTPサーバは立てる必要があるのでしょうか?
しかし今は、メール送信(jsp)までいけません。。。。


> 帯鯖@名古屋です。
>
> およそ絞れてきました。
>
> が、、、
>
> 一番最初の投稿時は、JSP のコンパイルでNGだったわけですよね?
> 現段階において、15600 の JSP 画面にアクセスした場合、
>
> ・ まだコンパイルが通らない
> ・「メール送信成功」のルーチンへ達するが、メールサーバ(127.0.0.1)に送信ログがない
> ・「メール送信失敗」のルーチンを通ってしまう
>
> など、どのような症例が出るのですか?
>
> メールが送信できないのは分かりますが、そこで、"どのような" エラーが発生しているのかがいつも分かりません。
> 厳しく言うようですが、「○○を行なったところ、○○に○○の表示が出た。△△に、△△というエラーログが記載された。」
> のように、デバッグを挟むなどして、症状箇所を明確に示してください。
>
>
> SMTP サーバは立っていますよね?
> SMTP サーバに対し、127.0.0.1 からの許可はされていますか?
> メールサーバへ到達していますか?
> メールサーバは、554 の応答を返していないですか?
>
> ひとつでも×が付けば、相手側での受信はできません。
>
>
> 以上2点、切り分けを実施してください。
>
>
> > 切り分けテストはOKでしたが、メール送信は駄目でした。。。


コンパイル自体は出来ているということですよね?

No.15639 投稿時間:2004年04月10日(Sat) 20:11 投稿者名:TOMOMI URL:

メール確認(jsp)画面で、真っ白に表示されるということは、
コンパイル自体は出来ているということですよね?

文字化けが悪さして、おかしくなっているということでしょうか?


文字化けが表示されました。

No.15661 投稿時間:2004年04月12日(Mon) 12:39 投稿者名:TOMOMI URL:

Linuxを再インストールしてみると、
○メール確認(jsp)で
文字化けが表示されました。
言語は『西ヨーロッパ言語』です。
それで無理やり、送信すると、

○メール送信(jsp)

***********************************************************************************************************************
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: JSPのクラスをコンパイルできません

JSPファイル: /jsp/sendmail.jsp の中の行: 8でエラーが発生しました

生成されたサーブレットのエラーです:
[javacハ Compiling 1 source file

/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:76: 文字列リテラルが閉じられていません。
out.println("鐃緒?鐃緒申鐃緒申膀??鐃順?鐃?;
^



JSPファイル: /jsp/sendmail.jsp の中の行: 8でエラーが発生しました

生成されたサーブレットのエラーです:
/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:77: ')' がありません。
} catch (Exception e) {
^



JSPファイル: /jsp/sendmail.jsp の中の行: 8でエラーが発生しました

生成されたサーブレットのエラーです:
/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:78: 文字列リテラルが閉じられていません。
out.println("鐃緒?鐃緒申鐃緒申膀????申鐃?;
^



JSPファイル: /jsp/sendmail.jsp の中の行: 8でエラーが発生しました

生成されたサーブレットのエラーです:
/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:79: ')' がありません。
}
^
エラー 4 個


at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:130)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:293)
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:353)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:370)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:473)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:190)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:263)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:360)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:604)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:562)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:679)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:534)

************************************************************************************************************************

と表示されました。
○メール確認(jsp)で文字化け起こっているせいで、メール送信(jsp)が出来ないのでしょうか?

宜しくお願いします。


メール確認(jsp)は解決しましたが・・・

No.15665 投稿時間:2004年04月12日(Mon) 17:07 投稿者名:TOMOMI URL:

先頭に
<%@ page pageEncoding="Windows-31J"
contentType="text/html;charset=Windows-31J" %>
を記述することでメール確認(jsp)は解決しました。
しかし、メール送信(jsp)をすると、

************************************************************************************************************

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: JSPのクラスをコンパイルできません

JSPファイル: /jsp/sendmail.jsp の中の行: 9でエラーが発生しました

生成されたサーブレットのエラーです:
[javacハ Compiling 1 source file

/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:8: パッケージ javax.mail は存在しません。
import javax.mail.*;
^
/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:9: パッケージ javax.mail.internet は存在しません。
import javax.mail.internet.*;
^
/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:68: シンボルを解決できません。
シンボル: クラス Session
場所 : org.apache.jsp.sendmail_jsp の クラス
Session s = Session.getDefaultInstance(p, null);
^



JSPファイル: /jsp/sendmail.jsp の中の行: 9でエラーが発生しました

生成されたサーブレットのエラーです:
/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:68: シンボルを解決できません。
シンボル: 変数 Session
場所 : org.apache.jsp.sendmail_jsp の クラス
Session s = Session.getDefaultInstance(p, null);
^



JSPファイル: /jsp/sendmail.jsp の中の行: 9でエラーが発生しました

生成されたサーブレットのエラーです:
/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:69: シンボルを解決できません。
シンボル: クラス MimeMessage
場所 : org.apache.jsp.sendmail_jsp の クラス
MimeMessage mim = new MimeMessage(s);
^



JSPファイル: /jsp/sendmail.jsp の中の行: 9でエラーが発生しました

生成されたサーブレットのエラーです:
/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:69: シンボルを解決できません。
シンボル: クラス MimeMessage
場所 : org.apache.jsp.sendmail_jsp の クラス
MimeMessage mim = new MimeMessage(s);
^



JSPファイル: /jsp/sendmail.jsp の中の行: 9でエラーが発生しました

生成されたサーブレットのエラーです:
/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:72: シンボルを解決できません。
シンボル: クラス InternetAddress
場所 : org.apache.jsp.sendmail_jsp の クラス
mim.setFrom(new InternetAddress(mFrom, mName, "iso-2022-jp"));
^



JSPファイル: /jsp/sendmail.jsp の中の行: 9でエラーが発生しました

生成されたサーブレットのエラーです:
/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:73: パッケージ Message は存在しません。
mim.setRecipients(Message.RecipientType.TO, mTo);
^



JSPファイル: /jsp/sendmail.jsp の中の行: 9でエラーが発生しました

生成されたサーブレットのエラーです:
/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:80: シンボルを解決できません。
シンボル: 変数 Transport
場所 : org.apache.jsp.sendmail_jsp の クラス
Transport.send(mim);
^
エラー 9 個


at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:130)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:293)
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:353)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:370)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:473)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:190)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:263)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:360)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:604)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:562)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:679)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:534)


************************************************************************************************************


と表示されます。
パッケージ javax.mail は存在しません。と表示されるのですが、
CLASSPATHは設定しています。

CLASSPATH=:/usr/local/j2sdk1.4.2/lib/imap.jar
:/usr/local/j2sdk1.4.2/lib/mail.jar
:/usr/local/j2sdk1.4.2/lib/mailapi.jar
:/usr/local/j2sdk1.4.2/lib/pop3.jar
:/usr/local/j2sdk1.4.2/lib/smtp.jar
:/usr/local/j2sdk1.4.2/lib/activation.jar
:/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/common/lib/servlet.jar
:/usr/local/j2sdk1.4.2/lib/imap.jar
:/usr/local/j2sdk1.4.2/lib/mail.jar
:/usr/local/j2sdk1.4.2/lib/mailapi.jar
:/usr/local/j2sdk1.4.2/lib/pop3.jar
:/usr/local/j2sdk1.4.2/lib/smtp.jar
:/usr/local/j2sdk1.4.2/lib/activation.jar
:/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/common/lib/servlet.jar
:/usr/local/j2sdk1.4.2/lib/imap.jar
:/usr/local/j2sdk1.4.2/lib/imap.jar


javax.mail が悪いのでしょうか?
宜しくお願いします。


切り分け手順はもっとあるように思います。

No.15675 投稿時間:2004年04月13日(Tue) 01:08 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

報告の通り、ご自身でいろいろ試されることを期待しておりました。

文字化けに起因すると想定されるのであれば、nkf などを使ってもう少しトライしてみてください。
# 必ずバックアップを取ってから!

文字コードが合っていないとコンパイルが通らないこともあります。
ただし、例えば日本語表記部分を含む、同じ文字コードの2つの JSP コードがあったとし、
一方のみがコンパイルが通らないということは、そうはないはずです。両方ともコンパイルできないか、あるいはその逆かでしょう。
# メソッドでコケる場合はありますが、これはコンパイル段階とは違う。

16 ビットコード系をすべて外してみるのも有用です。

また、パッケージがないとコンパイルではじかれるようであれば、それは前回申した通りです。


JavaMail を含む J2EE は、コードは簡素に見えても内部では非常に繁雑な手順を踏んでいます。
ただ「動いた」とするだけでは、今後のサーブレット開発において、必ず悩みを伴います。
少なくともコンテナの概念あたりは、自学してください。

本当の議論は、原因を特定できてからだと思います。

> 先頭に
> <%@ page pageEncoding="Windows-31J"
> contentType="text/html;charset=Windows-31J" %>
> を記述することでメール確認(jsp)は解決しました。
> しかし、メール送信(jsp)をすると、
>
> ************************************************************************************************************
>
> type Exception report
>
> message
>
> description The server encountered an internal error () that prevented it from fulfilling this request.
>
> exception
>
> org.apache.jasper.JasperException: JSPのクラスをコンパイルできません
>
> JSPファイル: /jsp/sendmail.jsp の中の行: 9でエラーが発生しました
>
> 生成されたサーブレットのエラーです:
> [javacハ Compiling 1 source file
>
> /usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:8: パッケージ javax.mail は存在しません。
> import javax.mail.*;
> ^
> /usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:9: パッケージ javax.mail.internet は存在しません。
> import javax.mail.internet.*;
> ^
> /usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:68: シンボルを解決できません。
> シンボル: クラス Session
> 場所 : org.apache.jsp.sendmail_jsp の クラス
> Session s = Session.getDefaultInstance(p, null);
> ^
>
>
>
> JSPファイル: /jsp/sendmail.jsp の中の行: 9でエラーが発生しました
>
> 生成されたサーブレットのエラーです:
> /usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:68: シンボルを解決できません。
> シンボル: 変数 Session
> 場所 : org.apache.jsp.sendmail_jsp の クラス
> Session s = Session.getDefaultInstance(p, null);
> ^
>
>
>
> JSPファイル: /jsp/sendmail.jsp の中の行: 9でエラーが発生しました
>
> 生成されたサーブレットのエラーです:
> /usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:69: シンボルを解決できません。
> シンボル: クラス MimeMessage
> 場所 : org.apache.jsp.sendmail_jsp の クラス
> MimeMessage mim = new MimeMessage(s);
> ^
>
>
>
> JSPファイル: /jsp/sendmail.jsp の中の行: 9でエラーが発生しました
>
> 生成されたサーブレットのエラーです:
> /usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:69: シンボルを解決できません。
> シンボル: クラス MimeMessage
> 場所 : org.apache.jsp.sendmail_jsp の クラス
> MimeMessage mim = new MimeMessage(s);
> ^
>
>
>
> JSPファイル: /jsp/sendmail.jsp の中の行: 9でエラーが発生しました
>
> 生成されたサーブレットのエラーです:
> /usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:72: シンボルを解決できません。
> シンボル: クラス InternetAddress
> 場所 : org.apache.jsp.sendmail_jsp の クラス
> mim.setFrom(new InternetAddress(mFrom, mName, "iso-2022-jp"));
> ^
>
>
>
> JSPファイル: /jsp/sendmail.jsp の中の行: 9でエラーが発生しました
>
> 生成されたサーブレットのエラーです:
> /usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:73: パッケージ Message は存在しません。
> mim.setRecipients(Message.RecipientType.TO, mTo);
> ^
>
>
>
> JSPファイル: /jsp/sendmail.jsp の中の行: 9でエラーが発生しました
>
> 生成されたサーブレットのエラーです:
> /usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/examples/jsp/sendmail_jsp.java:80: シンボルを解決できません。
> シンボル: 変数 Transport
> 場所 : org.apache.jsp.sendmail_jsp の クラス
> Transport.send(mim);
> ^
> エラー 9 個
>
>
> at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:130)
> at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:293)
> at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:353)
> at org.apache.jasper.compiler.Compiler.compile(Compiler.java:370)
> at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:473)
> at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:190)
> at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
> at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
> at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
> at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
> at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
> at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
> at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
> at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
> at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
> at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
> at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:263)
> at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:360)
> at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:604)
> at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:562)
> at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:679)
> at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
> at java.lang.Thread.run(Thread.java:534)
>
>
> ************************************************************************************************************
>
>
> と表示されます。
> パッケージ javax.mail は存在しません。と表示されるのですが、
> CLASSPATHは設定しています。
>
> CLASSPATH=:/usr/local/j2sdk1.4.2/lib/imap.jar
> :/usr/local/j2sdk1.4.2/lib/mail.jar
> :/usr/local/j2sdk1.4.2/lib/mailapi.jar
> :/usr/local/j2sdk1.4.2/lib/pop3.jar
> :/usr/local/j2sdk1.4.2/lib/smtp.jar
> :/usr/local/j2sdk1.4.2/lib/activation.jar
> :/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/common/lib/servlet.jar
> :/usr/local/j2sdk1.4.2/lib/imap.jar
> :/usr/local/j2sdk1.4.2/lib/mail.jar
> :/usr/local/j2sdk1.4.2/lib/mailapi.jar
> :/usr/local/j2sdk1.4.2/lib/pop3.jar
> :/usr/local/j2sdk1.4.2/lib/smtp.jar
> :/usr/local/j2sdk1.4.2/lib/activation.jar
> :/usr/local/jakarta-tomcat-4.1.27-LE-jdk14/common/lib/servlet.jar
> :/usr/local/j2sdk1.4.2/lib/imap.jar
> :/usr/local/j2sdk1.4.2/lib/imap.jar
>
>
> javax.mail が悪いのでしょうか?
> 宜しくお願いします。


送信画面のエラーはなくなりました。

No.15706 投稿時間:2004年04月16日(Fri) 16:56 投稿者名:TOMOMI URL:

jarファイルを
examples/WEB-INF/lib
以下に変更したら、送信画面のエラーはなくなりました。

しかし、以下のjar文で送信がうまくいきません。
(メール送信失敗と表示されます。)
サーバ、クライアントに送信しても駄目でした。
しかしEvolution Emailはちゃんと作動しています。



******************************************************************************************************

<%@ page pageEncoding="Windows-31J"
contentType="text/html;charset=Windows-31J"
import="java.util.*,javax.mail.*,javax.mail.internet.*" %>
<html>
<head>
<title>メール送信フォーム</title>
</head>
<body>
<h2>メール送信完了</h2>
<%
//送信設定(SMTP、送信先)
String mSv = "192.168.1.2";
String mTo = "***@*******.com";

//フォームの値を取得
String mName = request.getParameter("name");
String mFrom = request.getParameter("from");
String mTitle = request.getParameter("title");
String mNaiyou = request.getParameter("naiyou");
String mBd = new String(mNaiyou.getBytes("8859_1"), "JISAutoDetect");

try {
//MimeMessageオブジェクトの生成
Properties p = new Properties();
p.put("mail.smtp.host",mSv);
Session s = Session.getDefaultInstance(p, null);
MimeMessage mim = new MimeMessage(s);

//送信元、送信先の設定
mim.setFrom(new InternetAddress(mFrom, mName, "iso-2022-jp"));
mim.setRecipients(Message.RecipientType.TO, mTo);

//送信内容の設定
mim.setSubject(mTitle, "iso-2022-jp");
mim.setText(mBd, "iso-2022-jp");

//メール送信
Transport.send(mim);
out.println("メール送信完了");
} catch (Exception e) {
out.println("メール送信失敗");
}
%>
</body>
</html>

******************************************************************************************************


もう少しですね。

No.15710 投稿時間:2004年04月17日(Sat) 02:53 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

> しかし、以下のjar文で送信がうまくいきません。
> (メール送信失敗と表示されます。)
> サーバ、クライアントに送信しても駄目でした。

あとは、デバッグ文を用いた解析で、箇所を特定できますね。

> jarファイルを
> examples/WEB-INF/lib
> 以下に変更したら、送信画面のエラーはなくなりました。

examples ディレクトリは、あくまでサンプルコードが入っているだけなので、
「そこに .jar を置く必要がある」ということは、まったくありません。
CLASSPATH 設定には問題はなかったはずですが、もう一度見直してみてください。
それから、パーミッションの観点などを含め、きちんと .jar を参照できることも。

今後の順番として、

1. 原因箇所の特定
2. *.jar への CLASSPATH

でしょうか。

もう少しのところまで来ています。
まずは、「送信できること」を主眼におきましょう。


|目次|掲示板|過去ログ目次|▲頁先頭|