0

jsp でメールを送信する必要がありますが、ページ自体をリロードしてはいけません。POST イベントでリロードすると、実装全体が正常に動作しますが、ajax で動作するようにコードを調整すると、それが壊れます。ajax イベントがトリガーされたときに、index.jsp 内の jsp-Code が実行されないようです。いくつかのスニペットを示します。

index.jsp

            <%
            String result = "=("; 
            String to = request.getParameter("rec_mail");
            if(to != null) {
                String from = request.getParameter("sendermail");
                String host = "mailserver";
                Properties properties = System.getProperties();
                properties.setProperty("mail.smtp.host", host);
                Session mailSession = Session.getDefaultInstance(properties);
                try{
                    MimeMessage message = new MimeMessage(mailSession);
                    message.setFrom(new InternetAddress(from));
                    message.addRecipient(Message.RecipientType.TO,
                          new InternetAddress(to));
                    message.setSubject("Feedback");
                    message.setText(request.getParameter("feedbackinput"));
                    Transport.send(message);
                    result = "Sucess!";
                }catch (MessagingException e) {
                    e.printStackTrace();
                    result = "failed!";
                }
            }

            out.println(request.getParameter("sendermail"));
            out.println(result);

            %>

 <input id="bsend" class="fbutton" type="submit" name="send" value="Send" onclick="loadContent()" style="float:right; width:18%; height:35%;" >

ajax.js

var xmlhttp
function loadContent() {
    xmlhttp=GetXmlHttpObject();
    if (xmlhttp==null)
    {
        alert ("Your browser does not support Ajax!");
        return;
    }

    var url="./index.jsp";

    xmlhttp.open("post",url,true);
    xmlhttp.send(null);
    xmlhttp.onreadystatechange=getOutput;
}
function getOutput()
{
  if (xmlhttp.readyState==4)
  {
    alert("Message sent!");
  }
}
function GetXmlHttpObject()
{
    if (window.XMLHttpRequest)
    {
       return new XMLHttpRequest();
    }
    if (window.ActiveXObject)
    {
       return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return null;
}

(どこでも関連する部分を表示するだけです)

警告メッセージが表示されますが、メールが送信されません...私がやろうとしていることは明らかだと思います..

ありがとうございました!

よろしくお願いします

4

1 に答える 1