Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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邮件API无法读取收件箱_Java_Email_Outlook - Fatal编程技术网

Java邮件API无法读取收件箱

Java邮件API无法读取收件箱,java,email,outlook,Java,Email,Outlook,我曾尝试实现一个简单的程序,使用pop3协议读取outlook收件箱,但即使有2封未读邮件,服务器也不会返回任何邮件。为什么会出现这个问题?它是否与Microsoft Exchange server设置有关 public void retrieveEmail() { // JavaMail API - Exchange server to allow IMAP access // mail server connection parameters

我曾尝试实现一个简单的程序,使用pop3协议读取outlook收件箱,但即使有2封未读邮件,服务器也不会返回任何邮件。为什么会出现这个问题?它是否与Microsoft Exchange server设置有关

public void retrieveEmail() {
        // JavaMail API - Exchange server to allow IMAP access

        // mail server connection parameters
        String user = "";
        String password = "";

        // connect to my pop3 inbox
        Properties properties = new Properties();

        properties.put("mail.store.protocol", "pop3");
        properties.put("mail.pop3.host", host);
        properties.put("mail.pop3.port", "110");
        properties.put("mail.pop3.user", user);
        properties.put("mail.pop3.timeout", "158000");
        properties.put("mail.pop3.connectiontimeout", "158000");

        Session session = Session.getInstance(properties);
        session.setDebug(true);

        Store store = null;
        Folder inbox = null;

        try {
            store = session.getStore("pop3");
            store.connect(host, user, password);
            inbox = store.getFolder("Inbox");
            inbox.open(Folder.READ_ONLY);

            // get the list of inbox messages
            int totalMsg = inbox.getMessageCount();
            int unread = inbox.getUnreadMessageCount();
            Message[] messages = inbox.getMessages();
            Message[] msg = inbox.search(new FlagTerm(new Flags(Flag.SEEN), false));

            System.out.print("size " + messages .length);
            if (messages.length == 0) System.out.println("No messages found.");

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

                // stop after listing ten messages
                if (i > 10) {
                    System.exit(0);
                    inbox.close(true);
                    store.close();
                }

                System.out.println("Message " + (i + 1));
                System.out.println("From : " + messages[i].getFrom()[0]);
                System.out.println("Subject : " + messages[i].getSubject());
                Object content = messages[i].getContent();

                if (content instanceof String)  
                    System.out.print((String)content);  
                /* text/plain = String
                 * multipart" = Multipart
                 * MimeMessage
                 * input stream = Unknown Data Handler 
                 */

            }

            inbox.close(true);
            store.close();

        } catch (NoSuchProviderException e) {
            System.out.println(e.getMessage());
        } catch (MessagingException e) {
            System.out.println(e.getMessage());

        } catch (IOException e) {
            System.out.println(e.getMessage());
        } 
    }
public void retrieveEmail(){
//JavaMail API-允许IMAP访问的Exchange服务器
//邮件服务器连接参数
字符串user=“”;
字符串密码=”;
//连接到我的pop3收件箱
属性=新属性();
properties.put(“mail.store.protocol”、“pop3”);
properties.put(“mail.pop3.host”,host);
properties.put(“mail.pop3.port”,“110”);
properties.put(“mail.pop3.user”,user);
properties.put(“mail.pop3.timeout”,“158000”);
properties.put(“mail.pop3.connectiontimeout”、“158000”);
Session Session=Session.getInstance(属性);
session.setDebug(true);
Store=null;
文件夹收件箱=空;
试一试{
store=session.getStore(“pop3”);
store.connect(主机、用户、密码);
收件箱=store.getFolder(“收件箱”);
收件箱。打开(文件夹。只读);
//获取收件箱消息列表
int totalMsg=inbox.getMessageCount();
int unread=inbox.getUnreadMessageCount();
Message[]messages=inbox.getMessages();
Message[]msg=inbox.search(新标志词(新标志(Flag.SEEN),false));
系统输出打印(“大小”+消息长度);
if(messages.length==0)System.out.println(“未找到任何消息”);
for(int i=0;i10){
系统出口(0);
收件箱。关闭(true);
store.close();
}
System.out.println(“消息”+(i+1));
System.out.println(“From:”+消息[i].getFrom()[0]);
System.out.println(“主题:+消息[i].getSubject());
对象内容=消息[i].getContent();
if(字符串的内容实例)
系统输出打印((字符串)内容);
/*text/plain=字符串
*多部分“=多部分
*mimessage
*输入流=未知数据处理程序
*/
}
收件箱。关闭(true);
store.close();
}捕获(无此提供异常e){
System.out.println(e.getMessage());
}捕获(消息异常e){
System.out.println(e.getMessage());
}捕获(IOE异常){
System.out.println(e.getMessage());
} 
}
编辑1:

我调试了它,发现文件夹中的变量total为零

请帮忙


谢谢。

询问您的电子邮件管理员上述电子邮件帐户的“别名”的交换值是多少。例如,如果他们的值设置为“香蕉!”,则您必须将上述代码改为store.getFolder(“香蕉!”)而不是store.getFolder(“收件箱”)

我只希望您没有发布您的生产用户名+密码…为什么即使outlook显示有大量电子邮件,Java Mail API也无法从Microsoft exchange server获取邮件?可能您缺少一些身份验证参数…您检查过了吗:您确定您的pop3端口是110而不是25吗?另外,您使用的是哪一版本的j2ee 1.3?还是1.4?