- - PR -
Tomcatでメールを送るときの設定(OS固有の問題?)
1|2|3
次のページへ»
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-09-29 01:16
Debian Gnu/Linuxでtomcatを使ったメール送信でのエラーについて対処法がわからないままです。ご存知の方がいらっしゃいましたら教えていただきたいと思って投稿します
ちなみにぼくはwin2000で作成したものをLinuxで稼動させるようにしています。win2000では問題なくメール送信はできました。利用目的は趣味と学術目的の範囲内です。 OS Debian Gnu/Linux3.0(woody) apt-line http://ftp.jp.debian.org sid tomcat tomcat4 sdk j2sdk1.4(Blackdown) メール送信のソース部分 ------------------------------ Context initialContext = new InitialContext(); Session session = (Session) initialContext.lookup("java:comp/env/mail/Session"); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(送信元)); message.setSentDate(new Date()); InternetAddress dests[] = new InternetAddress[送信数]; System.out.println("Send for..."); for(int i = 0; i < 送信数;i++ ){ dests[i] = new InternetAddress(送信先); } message.setRecipients(Message.RecipientType.TO, dests); message.setSubject(題名, "ISO-2022-JP"); message.setText(本文, "ISO-2022-JP"); Transport.send(message); ------------------------------ web.xml ------------------------------ <resource-ref> <res-ref-name>mail/Session</res-ref-name> <res-type>javax.mail.Session</res-type> <res-auth>Container</res-auth> </resource-ref> ------------------------------ server.xml ------------------------------ <Resource name="mail/Session" auth="Container" type="javax.mail.Session"/> <ResourceParams name="mail/Session"> <parameter> <name>mail.smtp.host</name> <value>smtpサーバーのアドレス</value> </parameter> </ResourceParams> 実際送る場面になると ------------------------- javax.servlet.ServletException: Cannot create resource instance at servlet.BBSRegistServlet.sendMail(BBSRegistServlet.java:128) at servlet.BBSRegistServlet.doPost(BBSRegistServlet.java:93) 省略 javax.naming.NamingException: Cannot create resource instance at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:189) at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:301) 省略 ------------------------- となってしまいます。この「Cannot create resource instance」というのがわからなくてgoogleで検索しても欲しい情報が出てきません。 catalina.outには ------------------------- Sep 29, 2003 5:00:44 AM org.apache.jk.server.JkCoyoteHandler action INFO: RESET Sep 29, 2003 5:06:31 AM org.apache.jk.common.ChannelSocket processConnection INFO: connection timeout reached ------------------------- となっています。timeoutということはメールサーバーとのコネクションがとれていないということでしょうか?windowsではコネクションをとれるのにLinuxではできないのはなぜ… いままで起こってきた問題はすべてインターネットで検索して解決してきのですが、今回ばかりは手が出せなくてお手上げ状態です。 win2000では問題なく送信できたのでメールサーバーは問題ないと思います。 ご存知かたいらっしゃいましたらお願いします (catalina.outの情報を追記しました) [ メッセージ編集済み 編集者: こくぼ 編集日時 2003-09-29 05:06 ] [ メッセージ編集済み 編集者: こくぼ 編集日時 2003-09-29 06:36 ] | ||||
|
投稿日時: 2003-09-29 09:36
ども、ほむらです。
プログラムに問題があるのかOSの設定に問題があるのかを 切り分けするためにもまずはTELNET ツールを利用して メール送信のエミュレートをしてみるのはどうでしょうか? ここで、接続が出来ないようであればLinux側の設定に問題があると思いますし メールが送信できた場合にはプログラムの問題ということになると思います。 #LinuxからWindowsへは通信が出来るんですよね? | ||||
|
投稿日時: 2003-09-29 10:41
(JDBCデータソースをJNDIで参照できないトラブルとよく似てますけど...)
JavaMailのセッションをじかに取得して動作確認を行ってみましたか? Context initialContext = new InitialContext(); Session session = (Session) initialContext.lookup("java:comp/env/mail/Session"); ↓ Session session = Session.getDefaultInstance(...); | ||||
|
投稿日時: 2003-09-29 23:59
ほむらさん、SuperCreekeさん、アドバイスありがとうございます。
お二人に指摘していただいたことは事前に予測できた対処法でした。自分の勉強不足を感じてしまいます。 ほむらさん、 ほむらさんに指摘していただいた通り、LinuxからTelnetコマンドでメールの送信を行ってみたところ、問題なく送れました。通信の問題はないみたいです。 >#LinuxからWindowsへは通信が出来るんですよね? ぼくの勉強不足でごめんなさい。これはどういうことでしょうか? SuperCreekeさん、 プログラムへ直で打つことはここに投稿したあとに自分でも思いつきました。対処法として普通に思い当たりそうなことなのに恥ずかしい限りです。 さっそくプログラム内で記述したものをwin2000で作成。win2000でメール送信が可能なことを確認してからLinuxへ移動。稼動させてみたところ、 javax.mail.NoSuchProviderException: No provider for Address type: rfc822 というエラーが発生しました。 Googleで検索したところ、 http://nonzero.hp.infoseek.co.jp/pgzakki.shtml このページにmail.jarへのCLASSPATHの設定ができていないときに発生するとありました。 言われた通りCLASSPATHを /usr/share/tomcat4/common/lib/mail.jar に設定して試したところ。 …結果変わらず…でした。 http://www.sk-jp.com/cgi-bin/treebbs.cgi?log=1155 に、CLASSPATHを設定しているのに発生するエラーについての質問をされている方がいるのですが問題が解決されずに終わってしまっています。 http://java-house.jp/ml/archive/j-h-b/038985.html にもGoogleで検索すると出てくるのですが、このサーバーへの移動ができません そこで、、 英文のサイトで頑張って調べてみたところSunのサイトでJavaMail1.3をダウンロードしてsmtp.jarを追加してね、みたいなことが書いてあったので実際にダウンロードして実行してみたら以前のエラーは出なくなりました。ですが、その代わりに自分では解決することが困難なエラーが出てきました。 javax.servlet.ServletException: Sending failed; nested exception is: class javax.mail.MessagingException: IOException while sending message; nested exception is: javax.activation.UnsupportedDataTypeException: no object DCH for MIME type text/plain; charset=ISO-2022-JP 以上のエラーです。直感的に「no object DCH for MIME type text/plain; charset=ISO-2022-JP」のあたりに原因があると思い、検索した結果。。 悲しいことに英文のページしかヒットしませんでした。 それでも頑張って調べたところ「mailcap」というファイルがおかしいらしい。。のですがぼくの英文の読解力ではこれまでが限界で具体的にどこを直せば良いのかわかりません(+_+) 何か思い当たることはありますでしょうか? もし助言をしていただけるお時間の余裕がありましたら,是非ともよろしくお願いしますm(_ _)m | ||||
|
投稿日時: 2003-09-30 00:54
この辺が参考になりません?
http://java-house.jp/ml/archive/j-h-b/040526.html | ||||
|
投稿日時: 2003-09-30 01:25
うのきちさん助言ありがとうございます。
ぼくもGoogleで検索しているときに http://java-house.jp のページがよく表示されるのですが、ここ数日前からこのサイトにアクセスできなくなっているんです。(これを書いている前にも試してみましたがダメでした) これまた原因不明で困ってしまっているのですが… 追記:お蔭様でサーバーとのセッションは確立できたみたいです。 [ メッセージ編集済み 編集者: こくぼ 編集日時 2003-09-30 01:26 ] | ||||
|
投稿日時: 2003-09-30 09:55
ども、ほむらです。
メールサーバーがWindpws側にあると思ってしまって^^;;;; 勘違いしてました。(Linuxあるのにおかしいなとは感じていたのですが(笑) # java-house.jp 今いってみたらいけました。。。 # キャッシュだったらごめんなさい。 | ||||
|
投稿日時: 2003-09-30 13:55
せっかく、Googleを使っているんですから、そういう時は、キャッシュを見るといいですよ。
| ||||
1|2|3
次のページへ»
