2017-05-12 2 views
0

회사 서버를 사용하여 이메일을 보내려고했지만 작동하지 않습니다.Android JavaMail이 Exchange 서버로 메일을 보냅니다.

private Properties _setProperties() { 


    _port = 443; 
    _sport = 443; 
    Properties props = (Properties) System.getProperties().clone(); 

    props.put("mail.smtps.host", _host); 
    props.put("mails.debug", "true"); 
    props.put("mail.smtps.auth", "true"); 

    props.put("mail.smtps.port", _port); 
    props.put("mail.smtps.ssl.port", "true"); 
    props.put("mail.smtps.ssl.socketFactory.port", _sport); 
    props.put("mail.smtps.ssl.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    props.put("mail.smtps.ssl.socketFactory.fallback", "false"); 

    return props; 
} 

public boolean send() throws Exception { 
    Properties props = _setProperties(); 

    _user = "email"; 
    _pass = "pass"; 

    Session session = Session.getInstance(props, this); 
    session.setDebug(true); 

    MimeMessage msg = new MimeMessage(session); 
    msg.setFrom(new InternetAddress(_user)); 
    msg.setRecipients(MimeMessage.RecipientType.TO, "mailTO"); 
    msg.setSubject("SUBJECT"); 
    msg.setSentDate(new Date()); 
    msg.setText("TEXT"); 

    // send email 
    Transport transport = session.getTransport("smtps"); 
    transport.connect(); 
    transport.sendMessage(msg, msg.getAllRecipients()); 
    transport.close(); 

    return true; 

} 

디버그는 다음을 보여줍니다

DEBUG: setDebug: JavaMail version 1.5.5 

DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle] 

DEBUG SMTP: need username and password for authentication 

DEBUG SMTP: useEhlo true, useAuth true 

DEBUG SMTP: trying to connect to host "companyServer", port 443, isSSL true 

연결하려는 유지하고 대답을하지 않습니다. mail.smtps.writetimeout을 설정하면 java.net.SocketException이 반환됩니다. 소켓이 닫힙니다.

아이디어가 있습니까? : S

+0

[일반적인 JavaMail 실수] (https://javaee.github.io/javamail/FAQ#commonmistakes)를 수정하고 공식 [JavaMail for Android] (https : //javaee.github. io/javamail/Android). 그런 다음 [연결 디버깅 정보] (https://javaee.github.io/javamail/FAQ#condebug)를 따르십시오. –

답변

0

모든 Outlook 클라이언트는 MAPI 또는 MAPI-over-http (MAC 사용 EWS)를 사용합니다. 따라서 대부분의 Exchange 관리자는 사용자가 SMTP를 사용할 수 없으므로 예상대로 작동하지 않을 수 있습니다.

그런 식으로 SMTP를 사용할 수 있는지 MS Exchange 관리자에게 확인 했습니까?

+0

맞아요. Exchange 관리자와 함께 확인했는데 SMTP를 사용할 수 없기 때문에 EWS를 사용해야합니다. 내가 [EWS Andorid API] (github.com/alipov/ews-android-api)로 시도했지만 삭제 된 아파치와 같은 일부 클래스를 찾을 수 없기 때문에 실행 오류가 발생합니다. –

+0

저는 Android 개발자가 아니지만 좋은 출발점은 [ "방법 : Exchange에서 EWS를 사용하여 전자 메일 메시지 보내기"] (https://msdn.microsoft.com/en-us/library/office/dn600292(v=exchg.150) .aspx) 일 수 있습니다.) – BastianW

+0

고마워요. 마지막으로 수정 한 날짜가 2015 년 3 월 9 일 이었으므로 지금은 할 수있는 라이브러리가 없습니다. –

관련 문제