在Servlet或JSP中调用java类函数时,javax.mail.AuthenticationFailedException:EOF在套接字上出现异常?

在Servlet或JSP中调用java类函数时,javax.mail.AuthenticationFailedException:EOF在套接字上出现异常?,java,jsp,jakarta-mail,Java,Jsp,Jakarta Mail,当我在Servlet或JSP中调用java类函数时,我得到了一个异常javax.mail.AuthenticationFailedException:EOF on socket。而DowAttAndSetInfoInDB.java类工作正常。我可以;因为我是java邮件api的初学者,所以两天内无法解决它。我做了一些谷歌搜索,但问题仍然没有解决 DowAttAndSetInfoInDB.java package com.unread.donatt; public class DowAttAnd

当我在Servlet或JSP中调用java类函数时,我得到了一个异常javax.mail.AuthenticationFailedException:EOF on socket。而DowAttAndSetInfoInDB.java类工作正常。我可以;因为我是java邮件api的初学者,所以两天内无法解决它。我做了一些谷歌搜索,但问题仍然没有解决

DowAttAndSetInfoInDB.java

package com.unread.donatt;

public class DowAttAndSetInfoInDB {

    private String saveDirectory;
    Connection con = GetCon.getCon();

    /**
     * Sets the directory where attached files will be stored.
     *
     * @param dir absolute path of the directory
     */
    public void setSaveDirectory(String dir) {
        this.saveDirectory = dir;
    }

    /**
     * Downloads new messages and saves attachments to disk if any.
     *
     * @param host
     * @param port
     * @param userName
     * @param password
     */
    public void downloadEmailAttachments(String host, String port,
            String userName, String password) throws SQLException {
        Properties properties = new Properties();
        // server setting
        properties.put("mail.pop3.host", host);
        properties.put("mail.pop3.port", port);

        // SSL setting
        properties.setProperty("mail.pop3.socketFactory.class",
                "javax.net.ssl.SSLSocketFactory");
        properties.setProperty("mail.pop3.socketFactory.fallback", "false");
        properties.setProperty("mail.pop3.socketFactory.port",
                String.valueOf(port));

        Session session = Session.getDefaultInstance(properties);

        try {
            // connects to the message store
            Store store = session.getStore("pop3");
            store.connect(userName, password);

            // opens the inbox folder
            Folder folderInbox = store.getFolder("INBOX");
            folderInbox.open(Folder.READ_ONLY);

            // fetches new messages from server
            Message[] arrayMessages = folderInbox.getMessages();

            for (int i = 0; i < arrayMessages.length; i++) {

                Message message = arrayMessages[i];
                Address[] fromAddress = message.getFrom();
                String froms = fromAddress[0].toString();
                String subject = message.getSubject();
                String sentDate = message.getSentDate().toString();

                String contentType = message.getContentType();
                String messageContent = "";

                // store attachment file name, separated by comma
                String attachFiles = "";

                if (contentType.contains("multipart")) {
                    // content may contain attachments
                    Multipart multiPart = (Multipart) message.getContent();
                    //System.out.println(multiPart);
                    int numberOfParts = multiPart.getCount();
                    for (int partCount = 0; partCount < numberOfParts; partCount++) {
                        MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(partCount);
                        if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) {
                            // this part is attachment
                            String fileName = part.getFileName();
                            attachFiles += fileName + ", ";
                            part.saveFile(saveDirectory + File.separator + fileName);
                        } else {
                            // this part may be the message content
                            messageContent = part.getContent().toString();
                        }
                    }

                    if (attachFiles.length() > 1) {
                        attachFiles = attachFiles.substring(0, attachFiles.length() - 2);
                    }
                } else if (contentType.contains("text/plain")
                        || contentType.contains("text/html")) {
                    Object content = message.getContent();
                    if (content != null) {
                        messageContent = content.toString();
                    }
                }
                messageContent = getTextFromMessage(message);
                String insertMessage = "INSERT INTO inbox"
                        + "(userName, froms, subject, sentDate, messageContent,attachFiles) VALUES"
                        + "(?,?,?,?,?,?)";
                PreparedStatement ps = con.prepareStatement(insertMessage);
                ps.setString(1, userName);
                ps.setString(2, froms);
                ps.setString(3, subject);
                ps.setString(4, sentDate);
                ps.setString(5, messageContent);
                ps.setString(6, attachFiles);

                int rs = ps.executeUpdate();

                // print out details of each message
                System.out.println("Message #" + (i + 1) + ":");
                System.out.println("\t From: " + froms);
                System.out.println("\t Subject: " + subject);
                System.out.println("\t Sent Date: " + sentDate);
                System.out.println("\t Message: " + messageContent);
                System.out.println("\t Attachments: " + attachFiles);
            }

            // disconnect
            folderInbox.close(false);
            store.close();
        } catch (NoSuchProviderException ex) {
            System.out.println("No provider for pop3.");
        } catch (MessagingException ex) {
            System.out.println("Could not connect to the message store " +ex);
        } catch (IOException ex) {
        }

    }



    private String getTextFromMessage(Message message) throws MessagingException, IOException {
    String result = "";
    if (message.isMimeType("text/plain")) {
        result = message.getContent().toString();
    } else if (message.isMimeType("multipart/*")) {
        MimeMultipart mimeMultipart = (MimeMultipart) message.getContent();
        result = getTextFromMimeMultipart(mimeMultipart);
    }
    return result;
}
private String getTextFromMimeMultipart(
        MimeMultipart mimeMultipart)  throws MessagingException, IOException{
    String result = "";
    int count = mimeMultipart.getCount();
    for (int i = 0; i < count; i++) {
        BodyPart bodyPart = mimeMultipart.getBodyPart(i);
        if (bodyPart.isMimeType("text/plain")) {
            result = result + "\n" + bodyPart.getContent();
            break; // without break same text appears twice in my tests
        } else if (bodyPart.isMimeType("text/html")) {
            String html = (String) bodyPart.getContent();
            result = result + "\n" + org.jsoup.Jsoup.parse(html).text();
        } else if (bodyPart.getContent() instanceof MimeMultipart){
            result = result + getTextFromMimeMultipart((MimeMultipart)bodyPart.getContent());
        }
    }
    return result;
}


    /**
     * Runs this program with Gmail POP3 server
     *
     * @param args
     */
    public static void main(String[] args) throws SQLException {
        String host = "pop.gmail.com";
        String port = "995";
        String userName = "dummy2263@gmail.com";
        String password = "****";

        String saveDirectory = "C:\\Users\\ajay\\Desktop\\attch";

        DowAttAndSetInfoInDB receiver = new DowAttAndSetInfoInDB();
        receiver.setSaveDirectory(saveDirectory);
        receiver.downloadEmailAttachments(host, port, userName, password);

    }
}
package com.unread.donatt;
公共类DowAttAndSetInfoInDB{
私有字符串保存目录;
连接con=GetCon.GetCon();
/**
*设置存储附加文件的目录。
*
*@param dir目录的绝对路径
*/
公共void setSaveDirectory(字符串目录){
this.saveDirectory=dir;
}
/**
*下载新邮件并将附件保存到磁盘(如果有)。
*
*@param主机
*@param端口
*@param用户名
*@param密码
*/
public void downloadEmailAttachments(字符串主机、字符串端口、,
字符串用户名、字符串密码)引发SQLException{
属性=新属性();
//服务器设置
properties.put(“mail.pop3.host”,host);
properties.put(“mail.pop3.port”,port);
//SSL设置
properties.setProperty(“mail.pop3.socketFactory.class”,
“javax.net.ssl.SSLSocketFactory”);
properties.setProperty(“mail.pop3.socketFactory.fallback”、“false”);
properties.setProperty(“mail.pop3.socketFactory.port”,
字符串.valueOf(port));
Session Session=Session.getDefaultInstance(属性);
试一试{
//连接到消息存储
Store Store=session.getStore(“pop3”);
store.connect(用户名、密码);
//打开收件箱文件夹
Folder folderInbox=store.getFolder(“收件箱”);
folderInbox.open(文件夹只读);
//从服务器获取新邮件
Message[]arrayMessages=folderInbox.getMessages();
for(int i=0;i1){
attachFiles=attachFiles.substring(0,attachFiles.length()-2);
}
}else if(contentType.contains(“text/plain”)
||contentType.contains(“text/html”)){
对象内容=message.getContent();
如果(内容!=null){
messageContent=content.toString();
}
}
messageContent=getTextFromMessage(message);
String insertMessage=“插入收件箱”
+(用户名、发件人、主题、发送日期、消息内容、附件)值
+ "(?,?,?,?,?,?)";
PreparedStatement ps=con.prepareStatement(插入消息);
ps.setString(1,用户名);
ps.setString(2,FROM);
ps.setString(3,主题);
ps.setString(4,sentDate);
ps.setString(5,消息内容);
ps.setString(6个附件);
int rs=ps.executeUpdate();
//打印出每封邮件的详细信息
System.out.println(“消息#”+(i+1)+“:”;
System.out.println(“\t-From:”+froms);
System.out.println(“\t主题:“+主题”);
System.out.println(“\t发送日期:“+sentDate”);
System.out.println(“\t Message:+messageContent”);
System.out.println(“\t附件:“+attachFiles”);
}
//断开
folderInbox.close(假);
store.close();
}捕获(无此提供异常例外){
System.out.println(“pop3没有提供程序”);
}捕获(消息例外){
System.out.println(“无法连接到消息存储”+ex);
}捕获(IOEX异常){
}
}
私有字符串getTextFromMessage(消息消息)抛出MessaginException,IOException{
字符串结果=”;
if(message.isMimeType(“text/plain”)){
结果=message.getContent().toString();
}else if(message.isMimeType(“multipart/*”){
        <%

            String host = "pop.gmail.com";
            String port = "995";//587
            String userName = "dummy2263@gmail.com";
            String password = "****";

            String saveDirectory = "C:\\Users\\ajay\\Desktop\\attch";

            DowAttAndSetInfoInDB receiver = new DowAttAndSetInfoInDB();
            receiver.setSaveDirectory(saveDirectory);
            receiver.downloadEmailAttachments(host, port, userName, password);
 %>