2016-10-13 4 views
0

Так что я хочу знать, может ли организация использовать протокол SMTP для приема электронной почты с сервера Exchange. Как я читал, Стандарт для приема: POP3 или IMAP, а протокол SMTP является стандартным для отправки. Мой вопрос только в том, можно ли использовать SMTP в качестве входящего протокола. Если да, то я хочу знать, как я буду читать его сообщения с помощью JavaMail API.Может ли SMTP использоваться как входящий протокол на сервере Exchange

Я пробую следующий код. но получить NoSuchProviderException

private void fetch(String incomingHost, String username, String password) { 
    try { 

     Properties properties = new Properties(); 
     properties.put("mail.store.protocol", "smtp"); 
     properties.put("mail.smtp.host", incomingHost); 
     properties.put("mail.smtp.port", 25); 
     properties.put("mail.smtp.starttls.enable", false); 

     emailSession = Session.getInstance(properties); 

     Store store = emailSession.getStore(); 

     store.connect(incomingHost, 25, username, password); 

     // create the folder object and open it 
     Folder emailFolder = store.getFolder("INBOX"); 
     emailFolder.open(Folder.READ_ONLY); 

     BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 

     Message[] messages = emailFolder.getMessages(); 
     System.out.println("messages.length---" + messages.length); 

     for (int i = 0; i < messages.length; i++) { 
      Message message = messages[i]; 
      System.out.println("---------------------------------" + message.getDescription()); 
      //writePart(message); 
      String line = reader.readLine(); 
      if ("YES".equals(line)) { 
       message.writeTo(System.out); 
      } else if ("QUIT".equals(line)) { 
       break; 
      } 
     } 

     // close the store and folder objects 
     emailFolder.close(false); 
     store.close(); 

    } catch (javax.mail.NoSuchProviderException e) { 
     e.printStackTrace(); 
    } catch (MessagingException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

ответ

1

Простой ответ «нет», но StackOverflow требует от меня, чтобы добавить все эти слова, чтобы сделать ответ достаточно долго.

+0

У меня есть сомнения. мы можем получать электронные письма с сервера MS Exchange через API JavaMail. если да, то как? какие именно данные сервера понадобятся для получения почты из MS Exchange –

+1

Вам необходимо включить поддержку IMAP в Exchange. Затем вы можете использовать JavaMail для извлечения почты из Exchange, как и любой другой сервер IMAP. Для начала ознакомьтесь с [JavaMail FAQ] (http://www.oracle.com/technetwork/java/javamail/faq/index.html). –

+0

Большое спасибо @Shannon –

Смежные вопросы