首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过javamail不工作从outlook下载附件

通过javamail不工作从outlook下载附件
EN

Stack Overflow用户
提问于 2015-12-09 20:32:52
回答 1查看 965关注 0票数 0

我正在试着写一个程序,将下载一个附件从outlook自动通过java。

我使用的是javamail api。我可以使用api发送邮件,但当涉及到下载附件,甚至阅读邮件时,我面临着一些问题。我只对邮件协议有一个基本的了解,我阅读这些协议的目的就是为了做到这一点。除此之外,我对这个领域并不是很熟悉。

代码语言:javascript
复制
public class MailReceiver {

    public static void main(String[] args) {
        getMail();
        sendMail();
    }

    private static void sendMail() {
        // TODO Auto-generated method stub
        // Sender's email ID needs to be mentioned
                String from = "my.email@organization.com";

                String host = "something.organization.com";

                Properties properties = System.getProperties();
                properties.setProperty("mail.smtp.host", host);

                // Get the default Session object.
                Session session = Session.getDefaultInstance(properties);

                try {
                    // Create a default MimeMessage object.
                    MimeMessage message = new MimeMessage(session);

                    // Set From: header field of the header.
                    message.setFrom(new InternetAddress(from));

                    // Set To: header field of the header.
                    message.addRecipients(Message.RecipientType.TO,
                            InternetAddress.parse("some.email@organization.com"));

                    // Set Subject: header field
                    message.setSubject("Test Mail");

                    // Create the message part
                    BodyPart messageBodyPart = new MimeBodyPart();

                    StringBuilder email = new StringBuilder();
                    email.append("Hello World!");
                    // Fill message
                    messageBodyPart.setContent(email.toString(), "text/html");

                    // Create a multipar message
                    Multipart multipart = new MimeMultipart();

                    // Set text message part
                    multipart.addBodyPart(messageBodyPart);

                    // Send the complete message parts
                    message.setContent(multipart);

                    // Send message
                    Transport.send(message);
                    System.out.println("Mail sent successfully....");
                } catch (MessagingException mex) {
                    mex.printStackTrace();
                }

    }

    private static void getMail() {
        // Sender's email ID needs to be mentioned
        String user = "my.email@organization.com";
        String password = "my.password";

        String host = "something.organization.com";

        Properties properties = System.getProperties();  
           properties.setProperty("mail.smtp.host",host );  
           properties.put("mail.smtp.auth", "true");  


           Session session = Session.getDefaultInstance(properties,  
            new javax.mail.Authenticator() {  
            protected PasswordAuthentication getPasswordAuthentication() {  
             return new PasswordAuthentication(user,password);  
            }  
           });  



        try {
            Store store = session.getStore("pop3");  
             store.connect(host,user,password);  

             Folder folder = store.getFolder("inbox");  
             folder.open(Folder.READ_WRITE);  

             Message[] message = folder.getMessages(); 

            for (int a = 0; a < message.length; a++) {
                System.out.println("-------------" + (a + 1) + "-----------");
                System.out.println(message[a].getSentDate());

                Multipart multipart = (Multipart) message[a].getContent();

                for (int i = 0; i < multipart.getCount(); i++) {
                    BodyPart bodyPart = multipart.getBodyPart(i);
                    InputStream stream = bodyPart.getInputStream();
                    BufferedReader br = new BufferedReader(
                            new InputStreamReader(stream));

                    while (br.ready()) {
                        System.out.println(br.readLine());
                    }
                    System.out.println();
                }
                System.out.println();
            }

            folder.close(true);
            store.close();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

因为我不确定我应该在session.getStore() (在getMail()中)中设置什么,所以我尝试了所有我能做的变体。

对于pop3,我得到了以下错误:

代码语言:javascript
复制
DEBUG POP3: server doesn't support TOP, disabling it
javax.mail.AuthenticationFailedException: Logon failure: unknown user name or bad password.
    at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:174)
    at javax.mail.Service.connect(Service.java:313)
    at javax.mail.Service.connect(Service.java:172)
    at xxx.yyy.zzz.data.MailReceiver.getMail(MailReceiver.java:109)
    at xxx.yyy.zzz.data.MailReceiver.main(MailReceiver.java:28)

当我有smtp的时候

代码语言:javascript
复制
javax.mail.NoSuchProviderException: invalid provider
    at javax.mail.Session.getStore(Session.java:570)
    at javax.mail.Session.getStore(Session.java:536)
    at javax.mail.Session.getStore(Session.java:515)
    at xxx.yyy.zzz.data.MailReceiver.getMail(MailReceiver.java:108)
    at xxx.yyy.zzz.data.MailReceiver.main(MailReceiver.java:28)

对于imap,如下所示:

代码语言:javascript
复制
javax.mail.AuthenticationFailedException: AUTHENTICATE failed.
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:613)
    at javax.mail.Service.connect(Service.java:313)
    at javax.mail.Service.connect(Service.java:172)
    at xxx.yyy.zzz.data.MailReceiver.getMail(MailReceiver.java:109)
    at xxx.yyy.zzz.data.MailReceiver.main(MailReceiver.java:28)

当我给出imapspop3s时,我得到了unable to find valid certification path to requested target错误。

我不能找出是什么错误,因为我能够发送邮件没有任何问题。我也确定我应该在session.getStore()中使用什么。我所遵循的教程包含pop3

EN

回答 1

Stack Overflow用户

发布于 2015-12-10 04:01:03

首先,您需要修复证书路径问题。This JavaMail FAQ entry将会有所帮助。然后,使用"imaps“或将"mail.imap.ssl.enable”属性设置为"true“。您可能还想修复这些common mistakes。看看这个JavaMail FAQ entry about debugging,一旦你解决了这些问题,它可能会有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34178925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档