회사 서버를 사용하여 이메일을 보내려고했지만 작동하지 않습니다.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
[일반적인 JavaMail 실수] (https://javaee.github.io/javamail/FAQ#commonmistakes)를 수정하고 공식 [JavaMail for Android] (https : //javaee.github. io/javamail/Android). 그런 다음 [연결 디버깅 정보] (https://javaee.github.io/javamail/FAQ#condebug)를 따르십시오. –