プロが教える店舗&オフィスのセキュリティ対策術

JSPとServletで作成された添付ファイル付きメールの送信プログラムがあります。以下にその一部を掲載します。

***** SendForm.jsp ******
<form action="test/servlet/SendMail">
<input type="submit" value="添付する">
</form>
*************************

***** SendMail.java *****
public void doGet( 略 ) throws 略
{
try
{
Properties props = System.getProperties();
props.put("mail.smtp.host", "xxx.xxx.xxx.xxx");
Session session = Session.getDefaultInstance(props, null);
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("test@test.co.jp", "テスト","iso-2022-jp"));
msg.setRecipients(Message.RecipientType.TO, "test@test.co.jp");
msg.setSubject("テストメール!" , "iso-2022-jp");
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setText("これはテストメールです。" , "iso-2022-jp");
MimeBodyPart mbp2 = new MimeBodyPart();
FileDataSource fds = new FileDataSource("テスト.xls");
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(MimeUtility.encodeWord(fds.getName()));
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);
msg.setContent(mp);
msg.setSentDate(new Date());
Transport.send(msg);
}
catch(Exception e)
{
( 略 )
}
}
*************************

字数が制限されていますので、関係ないところは( 略 )とさせていただいています。

SendForm.jspで「添付する」を押して添付ファイルの送信処理を開始すると、HTTPの501番エラーが発生して、ファイルを送信することができなくなってしまいます(例外は一切発生していません)。なぜ例外ではなく501番のエラーが発生するのでしょうか。

A 回答 (2件)

JSPの方のformタグでmethodが指定されていないのでpostで送信されているんでしょう(それが仕様かどうかは知りませんが)。

で、postの処理が要求されているのにサーブレットにはdoGet(method=getの処理)しか実装されていないのでHTTP501(Not Implemented:未実装)エラーが返されると。

参考URL:http://www.asahi-net.or.jp/~ax2s-kmtn/ref/status …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

method="GET"とすると、うまくいきました。ありがとうございました。

お礼日時:2003/12/13 00:52

ファイルのアップロードするのであれば


MultipartとPOSTメソッドでsubmitする必要があったような気がします。

501エラーはサーバへ正常にリクエストが通っていないのではないのでしょうか?

サーブレットで一番最初に呼ばれるであろうメソッドまでたどりついていますか?
普通にサーブレットを使っているのであればdoGetメソッドが呼ばれていると思うのですが、直後にデバッグ文をいれてみてください。

そこまでたどり着いていないのであれば
JSPを見直す必要がありますね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

字数制限の関係上ここでは書けなかったのですが、ファイルのアップロード処理はこのプログラムが実行される前に完了しています。ここでは単にボタンを押せば送信処理が開始されるプログラムが作りたかったので、doGetメソッドを使用しました。これがいけなかったのでしょうか。

>普通にサーブレットを使っているのであれば
>doGetメソッドが呼ばれていると思うのですが、
>直後にデバッグ文をいれてみてください。

>そこまでたどり着いていないのであれば
>JSPを見直す必要がありますね。

JSPは問題ないと思いますので、サーブレットの方をもう一度見直して見ます。

お礼日時:2003/12/10 12:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!