Salve, GUJ,
Estou tentando enviar um email pelo SES da Amazon, via tomcat não consegui de jeito nenhum, da sempre o seguinte erro
org.apache.commons.mail.EmailException: Sending the email to the following server failed : email-smtp.us-east-1.amazonaws.com:465
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1410)
at org.apache.commons.mail.Email.send(Email.java:1437)
at br.com.multinfe.servidor.danfe.TesteAWS.main(TesteAWS.java:95)
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: email-smtp.us-east-1.amazonaws.com, port: 465;
nested exception is:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1972)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)
at javax.mail.Service.connect(Service.java:317)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1400)
... 2 more
Então eu fiz a classe com um Main e rodei pela JRE, a classe de teste é essa:
public class TesteAWS {
static final String FROM = "---";
static final String TO = "---";
static final String BODY = "This email was sent through the Amazon SES SMTP interface by using Java.";
static final String SUBJECT = "Amazon SES test (SMTP interface accessed using Java)";
static final String SMTP_USERNAME = "---";
static final String SMTP_PASSWORD = "---";
static final String HOST = "email-smtp.us-east-1.amazonaws.com";
static final int PORT = 25;
public static void main(String[] args) throws Exception {
Email email = new SimpleEmail();
email.setHostName(HOST);
email.setAuthenticator(new DefaultAuthenticator(SMTP_USERNAME, SMTP_PASSWORD));
email.setSSLOnConnect(true);
email.setStartTLSEnabled(true);
try {
email.setFrom(FROM);
email.setSubject("Email Teste");
email.setMsg("Mensagem");
email.addTo(TO);
email.send();
} catch (EmailException e) {
e.printStackTrace();
}
}
}
Pela JRE vai! Ele não reclama do certificado, mas pela JDK não vai!
Alguem pode me ajudar a configurar a JDK pra rodar esse código igual a JRE faz?