2012-07-06 2 views
5

Tôi đang tìm thư viện Java giúp tôi sử dụng IMAP và tốt hơn là IDLE.Thư viện cho IMAP IDLE

Tôi cần viết một ứng dụng Java được thông báo và truy xuất email mới bằng SSL. Ứng dụng sẽ kiểm tra hộp thư đến của tài khoản được lưu trữ bởi hMailServer.

Cho đến nay tôi đã xem xét:

Apache Commons Imap nhưng nó dường như không thực hiện IDLE.

JavaPushMail nhưng chưa đủ tài liệu (tôi có thể giải quyết được nhưng tôi không chắc người kế nhiệm của mình sẽ hài lòng).

Javamail, IMAPFolder của họ có vẻ như là lựa chọn tốt nhưng tôi thiếu thời gian và viết thư viện ổn định cho nó sẽ mất thời gian.

Chilkatsoft là thư viện $ 199, hơi cay một chút (tôi biết, mã miễn phí và đáng tin cậy luôn dễ dàng đi kèm :) Plus, tôi không chắc nó xử lý IDLE.

Tôi có thể tìm giải pháp thăm dò hộp thư đến nếu tài liệu được lưu trữ và ổn định.

Tôi đánh giá cao một số mã ví dụ, thư viện hoặc đẩy theo đúng hướng.

Xin lỗi vì tất cả "Tôi" và cảm ơn trước.

Trả lời

2

Tôi đã tiếp tục và sử dụng Javamail. Chỉ cần nghĩ rằng đó là lạ không có wrapper phong nha/khách hàng đã được viết cho nó được nêu ra. Vâng, không thể có tất cả. Cảm ơn câu trả lời, Conor Sherman.

2

Tôi chưa từng làm việc với bất kỳ thư viện nào bạn đề cập trừ Javamail, nhưng tôi có thể xác minh cho nó. Tôi đã phải viết một ứng dụng thăm dò ý kiến ​​một máy chủ trao đổi và phân tích tất cả các thư mới trong một hộp thư đến. Đây là một đoạn mã được sử dụng trong dự án đó. Tôi đã làm tất cả các cuộc thăm dò trong ứng dụng, vì vậy tôi đã không nhìn vào các thông báo đẩy từ máy chủ hoặc bất cứ điều gì. Tôi biết điều này không chính xác những gì bạn đang yêu cầu, nhưng tôi hy vọng đó là một bước đi đúng hướng.

import java.util.Properties; 
import javax.mail.* 
import javax.mail.search.FlagTerm; 


public class Driver { 
    public static void main(String[] args){ 
     // Create properties (disable security checks on server) 
     Properties props = new Properties(); 
     props.put("mail.imaps.ssl.checkserveridentity", "false"); 
     props.put("mail.imaps.ssl.trust", "*"); 

     // Get session 
     Session session = Session.getDefaultInstance(props, null); 

     try{ 
      // Get the store 
      Store store = session.getStore("imaps"); 
      store.connect("servername", "username", "password"); 

      //connection configuration 
      Folder folder = store.getFolder("INBOX"); 
      folder.open(Folder.READ_WRITE); 

      //get all unread messages in the inbox 
      FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false); 
      Message[] messages = folder.search(ft); 

      for (int i = messages.length -1; i>=0; i--) { 
       messages[i].setFlag(Flags.Flag.SEEN, true); 
      } 
      // Close connection 
      folder.close(false); 
      store.close(); 
     } 
     catch(Exception e){ 
     } 
    } 
} 
-1

tôi đã không sử dụng nó bản thân mình, nhưng thư viện này có vẻ tốt:

https://github.com/MailCore/mailcore2

MailCore 2 cung cấp một API đơn giản và không đồng bộ làm việc với các giao thức e-mail IMAP, POP và SMTP. API đã được thiết kế lại từ đầu.

+0

Hiện tại có thể sử dụng được từ java không? – arnt

+0

@arnt có tài liệu API Java. Có vẻ như có thể gọi mã C++ qua java. Tôi đoán nó có thể sử dụng được từ java. Nhưng nó không phải là java thuần túy. Tôi đoán bạn cần biên dịch lõi cho mỗi nền tảng. – guettli