- - PR -
スイッチを押した時点でメールを送信したい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-02-03 14:53
当方、JAVA初心者ですが、どうぞよろしくお願いしますm(__)m
やりたいことの流れは以下のようになっています。 ↓ @RS-232Cを用いたシリアル通信でスイッチの反応を検知する。(Communications API使用) ↓ Aスイッチに反応があり次第、定型文を所定のメールアドレスへ送信する。(JavaMail使用) ハードウェア(スイッチ)は作成しました。 そして、このページのサンプルプログラムを実行し ↓ http://www.javainthebox.net/JavaForFA/08-09CommAPI/No.08/commapi1.html @を成し遂げることができました。 メール送信についても、このページを参照し ↓ http://www.atmarkit.co.jp/fjava/javatips/123java022.html 達成することができました。 そして今、「スイッチの反応があったらメールを送る」というプログラムをどのように書いたら良いのかわからず、途方にくれています(涙) どなたか、ご指導お願い致しますm(__)m | ||||
|
投稿日時: 2007-02-03 18:24
反応を検知することができて、メールの送信ができるなら、
検知したタイミングでメール送信の機能を呼び出せばいいだけだと思いますが、 一体何について分からないのでしょうか? 仕事の丸投げを請け負う場所ではないので、 何について、どのような不明点があるかを整理してください。 何について分からないのかを分からないようでは、 回答する側も何を答えていいのやら分かりません。 質問内容の整理を行うと、疑問点が少しずつでも解決しますよ。 | ||||
|
投稿日時: 2007-02-04 16:19
| ||||
|
投稿日時: 2007-02-05 13:40
勘違いさせてしまいすみません。
一応以下のとおりにプログラムを組んでみました。 コンパイルは成功したのですが、 「Exception in thread "main" java.lang.NoSuchMethodError: main」 と出てしまい、うまく動作しません。 他のパソコンで再度チャレンジしたところ、うまく実行されていたようです。 なぜわたしの環境下で実行できないのか、不明です。 よろしければどなたかアドバイスをお願い致しますm(__)m ちなみに、あらかじめ同じフォルダ内に「SerialPortHandler.class」は置いてあります。 また、個人情報は伏せてあります。 import java.io.*; import java.util.*; import javax.comm.*; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SerialPortReader extends SerialPortHandler implements SerialPortEventListener { protected BufferedReader reader; public SerialPortReader(String portName){ super(portName); try { // SerialPortEvent を受け取るためのリスナの登録 port.addEventListener(this); } catch(TooManyListenersException ex){ ex.printStackTrace(); System.exit(1); } // Data Available イベントを受け取るようにする port.notifyOnDataAvailable(true); try { // 入力用の Reader を生成 reader = new BufferedReader( new InputStreamReader(port.getInputStream())); } catch (IOException ex){ ex.printStackTrace(); System.exit(1); } } public void serialEvent(SerialPortEvent event) { switch(event.getEventType()) { case SerialPortEvent.BI: MailTransfer.sendMail(); break; } } } class MailTransfer { public static void sendMail() { Properties objPrp=new Properties(); objPrp.put("mail.smtp.host","xxx.xxx.xxx.xx.jp"); // SMTPサーバ名 objPrp.put("mail.host","xxx.xxx.xxx.xx.jp"); // 接続するホスト名 // メールセッションを確立 Session session=Session.getDefaultInstance(objPrp,null); // 送信メッセージを生成 MimeMessage objMsg=new MimeMessage(session); try { // 送信先(TOのほか、CCやBCCも設定可能) objMsg.setRecipients(Message.RecipientType.TO,"xxx@xxx"); // Fromヘッダ InternetAddress objFrm=new InternetAddress("xxx@xxx","xxx xxx"); objMsg.setFrom(objFrm); // 件名 objMsg.setSubject("メールテスト","ISO-2022-JP"); // 本文 objMsg.setText("こんにちは","ISO-2022-JP"); // メール送信 Transport.send(objMsg); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } } [ メッセージ編集済み 編集者: 未記入 編集日時 2007-02-05 13:44 ] [ メッセージ編集済み 編集者: 未記入 編集日時 2007-02-05 13:45 ] | ||||
|
投稿日時: 2007-02-05 14:20
今日は。
読んで字の如くです。 実行時に指定したクラスの中に mainメソッドが含まれていないと言う事です。 mainメソッドを含んでいるクラスを指定してください また環境が同じかどうかも確認を。 | ||||
|
投稿日時: 2007-02-06 01:08
もう既に、タイトルと問題点が全然違いますよね。
まぁ、まずは通信だのメールだのは置いといて、 Javaの基本からやりましょうよ。 基本が出来れば、いろんなAPIの利用もできるようになりますよ。 |
1