Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用servlet发送带有附件的电子邮件?_Java_Jsp_Servlets - Fatal编程技术网

Java 如何使用servlet发送带有附件的电子邮件?

Java 如何使用servlet发送带有附件的电子邮件?,java,jsp,servlets,Java,Jsp,Servlets,我需要一个使用servlet的附件电子邮件编码。请帮帮我。我是Servlets和JSP的新手。我需要JSP和Servlet同时编码 以下是我迄今为止所尝试的- <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&g

我需要一个使用servlet的附件电子邮件编码。请帮帮我。我是Servlets和JSP的新手。我需要JSP和Servlet同时编码

以下是我迄今为止所尝试的-

<%@page contentType="text/html" pageEncoding="UTF-8"%>        
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Sending email</title>
    <link rel="stylesheet" href="style.css" type="text/css">
</head>
<body>
    <center>        
        <form action="EmailServlet" method="post" name="ss">   
            <table>
                <tr>
                    <td>To</td>
                    <td><input type="text" name="to"></td>
                </tr>
                <tr>
                    <td>cc</td>
                    <td><input type="text" name="cc"></td>
                </tr>
                <tr>
                    <td>bcc</td>
                    <td><input type="text" name="bcc"></td>
                </tr>
                <tr>
                    <td>From</td>
                    <td><input type="text" name="from"></td>
                </tr>
                <tr>
                    <td>Subject</td>
                    <td><input type="text" name="subject"></td>
                </tr>
                <tr>
                    <td>attach</td>
                    <td><input type="file" name="file1"></td>
                </tr>
                <tr>
                    <td>attach2</td>
                    <td><input type="file" name="file2"></td>
                </tr>        
                <tr>
                    <td>Message</td>
                    <td><textarea cols="25" rows="8" name="message"></textarea></td>
                </tr>
                <tr>
                    <td>password</td>
                    <td><input type="password" name="password"></td>
                </tr>
            </table>
            <br>
            <input type="submit" value="submit" onclick=" return soora();">
        </form>
    </center>
</body>
</html>
我得到如下错误:

java.lang.IllegalStateException: Cannot forward after response has been committed
EmailServlet.processRequest(EmailServlet.java:71)
EmailServlet.doPost(EmailServlet.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

使用&来完成这项工作

您可以使用Java Mail来完成这项工作,它是免费下载的。在servlet或JSP中,它与没有servlet或JSP时几乎相同,只是您可以使用context.xml和JNDI来获得连接,而无需对所有这些进行硬编码。但是,如果您不了解servlet或JSP,我不相信您已经准备好接受这些操作。

您正在向
catch
块中的
err
页面发送一个转发,该页面将提交响应,但您不会从那里返回,因此,代码将继续到底部,您将另一个转发发送到
succ
页面。实际上,如果发生异常,您将发送两个转发,而第二个转发无法发生,并导致您面临的特定异常

您需要添加
return
catch
块的末尾,以便方法返回,而不执行剩余的代码。另见


至于JavaMail不工作,如果您打印得到的真正异常的堆栈跟踪,那么会更有帮助,这样您就可以更准确地知道失败的是什么。现在,您只将消息设置为请求属性(显然需要在转发的错误页面中显示),并且您将注意力集中在“错误”异常上。请注意,在servlet类中发送邮件与在普通Java类中发送邮件没有什么不同。我建议先把servlet代码放在一边,让它在普通Java类中工作。

先生,请帮我找出答案。我已经贴了我试过的
java.lang.IllegalStateException: Cannot forward after response has been committed
EmailServlet.processRequest(EmailServlet.java:71)
EmailServlet.doPost(EmailServlet.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)