无法连接到邮件存储javax.mail.AuthenticationFailedException:[AUTH]用户名和密码不被接受

无法连接到邮件存储javax.mail.AuthenticationFailedException:[AUTH]用户名和密码不被接受,java,jakarta-mail,Java,Jakarta Mail,你好,我正试着 使用JavaMail下载电子邮件中的附件 本网站的参考资料: 但是,我得到以下错误: Could not connect to the message store javax.mail.AuthenticationFailedException: [AUTH] Username and password not accepted. 代码如下: public class EmailAttachmentReceiver { private String saveDirector

你好,我正试着 使用JavaMail下载电子邮件中的附件

本网站的参考资料:

但是,我得到以下错误:

Could not connect to the message store javax.mail.AuthenticationFailedException: [AUTH] Username and password not accepted.
代码如下:

 public class EmailAttachmentReceiver {
 private String saveDirectory;

 /**
  * 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) {
    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 from = 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();
                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();
                }
            }

            // print out details of each message
            System.out.println("Message #" + (i + 1) + ":");
            System.out.println("\t From: " + from);
            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.");
        ex.printStackTrace();
    } catch (MessagingException ex) {
        System.out.println("Could not connect to the message store");
        ex.printStackTrace();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
   }

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

    String saveDirectory = "E:/Attachment";

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

 }
 }
公共类EmailAttachmentReceiver{
私有字符串保存目录;
/**
*设置存储附加文件的目录。
*@param dir目录的绝对路径
*/
公共void setSaveDirectory(字符串目录){
this.saveDirectory=dir;
}
/**
*下载新邮件并将附件保存到磁盘(如果有)。
*@param主机
*@param端口
*@param用户名
*@param密码
*/
public void downloadEmailAttachments(字符串主机、字符串端口、,
字符串用户名、字符串密码){
属性=新属性();
//服务器设置
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();
}
}
//打印出每封邮件的详细信息
System.out.println(“消息#”+(i+1)+“:”;
System.out.println(“\t-From:”+From);
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没有提供程序”);
例如printStackTrace();
}捕获(消息例外){
System.out.println(“无法连接到消息存储”);
例如printStackTrace();
}捕获(IOEX异常){
例如printStackTrace();
}
}
/**
*使用Gmail POP3服务器运行此程序
*/
公共静态void main(字符串[]args){
String host=“pop.gmail.com”;
字符串端口=“995”;
String userName=“您的电子邮件”;
String password=“您的密码”;
字符串saveDirectory=“E:/Attachment”;
EmailAttachmentReceiver receiver=新的EmailAttachmentReceiver();
receiver.setSaveDirectory(saveDirectory);
receiver.downloadEmailAttachments(主机、端口、用户名、密码);
}
}
首先,纠正这些错误

显然,服务器认为您提供了错误的用户名和密码。如果您打开,您可能会发现服务器认为错误的更多线索。您可能还需要将“mail.debug.auth”属性设置为“true”,以查看完整的身份验证协议交换。

import com.packaging.dbconnection.Database;
import com.packaging.dbconnection.Database;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.mail.Address;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.NoSuchProviderException;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.search.FromTerm;
import javax.mail.search.SearchTerm;

/**
 * This program demonstrates how to download e-mail messages and save
 * attachments into files on disk.
 *
 * @author www.codejava.net
 *
 */
public class EmailAttachmentReceiver {
    private String saveDirectory;

/*vxcvxcv*/

    /**
     * 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) {

        PreparedStatement pst;
        ResultSet rs;

        Properties properties = new Properties();
        properties.setProperty("mail.store.protocol", "imaps");

        //session reading

        // 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));



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

            store.connect("imap.gmail.com", "yourmail@gmail.com", "yourpass");
            //Folder inbox = store.getFolder("INBOX");
           // inbox.open(Folder.READ_ONLY);



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

            // fetches new messages from server
            SearchTerm sender = new FromTerm(new InternetAddress("xyz@gmail.com"));
         //   Message[] messages = inbox.search(sender);
            Message[] arrayMessages = folderInbox.search(sender);

            for (int i = 0; i < arrayMessages.length; i++) {
                Message message = arrayMessages[i];
                Address[] fromAddress = message.getFrom();
                String from = 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();
                    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();

                    }
                }

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

                try{
                String driver="com.mysql.jdbc.Driver";
                String url="jdbc:mysql://localhost:3306/dbname";
                String user="root";
                String pass="";

                Class.forName(driver);
                Connection con=DriverManager.getConnection(url,user,pass);
                pst=con.prepareStatement("insert into applications() VALUES (?,?,?,?,?)");
                pst.setString(1,i+"1"); 
                pst.setString(2,from);
                pst.setString(3,subject);
                pst.setString(4,sentDate);
                pst.setString(5,attachFiles);


                int j = pst.executeUpdate();
                if(con!=null){
                System.out.println("connected");
                 }
                }
                catch (ClassNotFoundException ex) {
                    Logger.getLogger(EmailAttachmentReceiver.class.getName()).log(Level.SEVERE, null, ex);
                }
                catch (SQLException ex) {
                    Logger.getLogger(EmailAttachmentReceiver.class.getName()).log(Level.SEVERE, null, ex);
                }
            }

            // disconnect
            folderInbox.close(false);
            store.close();

        } catch (NoSuchProviderException ex) {
            System.out.println("No provider for pop3.");
            ex.printStackTrace();
        } catch (MessagingException ex) {
            System.out.println("Could not connect to the message store");
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

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

        String saveDirectory = "D:/Attachment";

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

    }
}
导入java.io.File; 导入java.io.IOException; 导入java.sql.Connection; 导入java.sql.DriverManager; 导入java.sql.PreparedStatement; 导入java.sql.ResultSet; 导入java.sql.SQLException; 导入java.util.Properties; 导入java.util.logging.Level; 导入java.util.logging.Logger; 导入javax.mail.Address; 导入javax.mail.Folder; 导入javax.mail.Message; 导入javax.mail.MessaginException; 导入javax.mail.Multipart; 导入javax.mail.NoSuchProviderException; 导入javax.mail.Part; 导入javax.mail.Session; 导入javax.mail.Store; 导入javax.mail.internet.InternetAddress; 导入javax.mail.internet.MimeBodyPart; 导入javax.mail