Hi!
I use jdev 11g and I send email with no problems.
I had to do this (from this post: https://community.oracle.com/thread/1589234?start=15&tstart=0):
in the wls console-
go to Environment>Servers>Configuration>Click on yr servername>Configuration>KeyStores.
In *'Java Standard Trust Keystore Passphrase' & in 'Confirm Java Standard Trust Keystore Passphrase'* fields, type '*changeit*' .
press the Save . restart the wls. this is working for me fine.
but now in jdev 12c the same code (same libraries) I also tried different smtp ports such as 25,465,587 but I'm not able to send the email.
I also tried this: http://www.middlewarementor.com/2012/02/26/unrecognized-ssl-message-plaintext-connection/
I created a machine and set to SSL but no results.
Library | Geronimo-javamail_1.4_spec-1.7.1.jar |
Stacktrace:
javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587;
nested exception is:
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:196)
at sped.negocio.LNSF.SFBean.LN_C_SFCorreoBean.enviarCorreo(LN_C_SFCorreoBean.java:104)
at sped.negocio.LNSF.SFBean.LN_C_SFCorreo_50yp00_LN_C_SFCorreoRemoteImpl.__WL_invoke(Unknown Source)
at weblogic.ejb.container.internal.SessionRemoteMethodInvoker.invoke(SessionRemoteMethodInvoker.java:34)
at sped.negocio.LNSF.SFBean.LN_C_SFCorreo_50yp00_LN_C_SFCorreoRemoteImpl.enviarCorreo(Unknown Source)
at sped.negocio.LNSF.SFBean.LN_C_SFCorreo_50yp00_LN_C_SFCorreoRemoteImpl_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:693)
at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:519)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:515)
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:295)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:254)
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:671)
at sun.security.ssl.InputRecord.read(InputRecord.java:504)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:507)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900)
... 18 more
Code:
/* Test*/
String[] data = new String[4];
data[0] = "Email subject";
data[1] = "/home/diego/Pictures/popupalignment.png";//local file
data[2] = " Email content";
data[3] = "destination@gmail.com";
String msj = lN_C_SFCorreoRemote.sendEmailWithAttachment(data);
public String sendEmailWithAttachment(String data[]) {
String PUERTO = "587";
String HOST = "smtp.gmail.com";
String USUARIO = "mygmailuser";
String CLAVE = "mygmailpassword";
String DOMINIO = "@gmail.com";
String EMAIL_QUE_ENVIA = USUARIO + DOMINIO;
try {
Multipart multipart = new MimeMultipart();
BodyPart messageBodyPart = new MimeBodyPart();
// Propiedades de la conexion
Properties props = new Properties();
props.put("mail.smtp.starttls.enable", "true");
props.setProperty("mail.smtp.host", HOST);
props.setProperty("mail.smtp.starttls.enable", "true");
props.setProperty("mail.smtp.starttls.required", "true");
props.setProperty("mail.smtp.user", EMAIL_QUE_ENVIA);
props.setProperty("mail.smtp.auth", "true");
props.put("mail.smtp.host", HOST);
props.put("mail.smtp.starttls.required", "true");
String smtp = HOST;
if (smtp.equals("smtp.gmail.com")) {
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", PUERTO);
props.setProperty("mail.smtp.socketFactory.port", PUERTO);
}
Session session = Session.getDefaultInstance(props);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(EMAIL_QUE_ENVIA));
String correos = data[3];
String[] vecCorreos = correos.split(";");
for (int i = 0; i < vecCorreos.length; i++) {
message.addRecipient(Message.RecipientType.TO, new InternetAddress(vecCorreos[i]));
}
message.setSubject(data[0]);
String contenido = data[2];
messageBodyPart.setContent(contenido, "text/html");
multipart.addBodyPart(messageBodyPart);
/*SE ADJUNTA EL REPORTE*/
BodyPart messageBodyPart2 = new MimeBodyPart();
FileDataSource source = new FileDataSource(data[1]);
messageBodyPart2.setDataHandler(new DataHandler(source));
messageBodyPart2.setFileName(source.getName());
multipart.addBodyPart(messageBodyPart2);
message.setContent(multipart);
message.setSentDate(new Date());
Transport t = session.getTransport("smtp");
t.connect(USUARIO, CLAVE);
t.sendMessage(message, message.getAllRecipients());
System.out.println("Se envio el correo Electronico!");
t.close();
return "Se envio el correo electronico a " + data[3];
} catch (Exception e) {
e.printStackTrace();
return "No se pudo enviar el correo electronico a " + data[3];
}
}