我在 weblogic 12c 中运行了一个发送邮件的 Web 应用程序。我有 2 个亚马逊实例,其中 1 个实例是具有不同 IP 的第一个实例的克隆。所以在原始实例中我发送邮件没有问题,但在克隆实例中我得到下一个异常:
javax.mail.MessagingException: Exception reading response;
nested exception is:
javax.net.ssl.SSLHandshakeException: Remote host closed connection durin
g handshake
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java
:1462)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1260)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:37
0)
at javax.mail.Service.connect(Service.java:288)
at javax.mail.Service.connect(Service.java:169)
at javax.mail.Service.connect(Service.java:189)
at com.proximate.generales.service.impl.CorreoServiceImpl.sendMail(Corre
oServiceImpl.java:170)......
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at sun.security.ssl.InputRecord.read(InputRecord.java:482)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:934)
... 96 more
这是我发送邮件的代码:
public boolean sendMail() throws Exception {
// try {
final ResourceBundle props1 = ResourceBundle.getBundle(ConstantesGenerales.SMTP_BUNDLE);
Properties props = new Properties();
for (Enumeration e = props1.getKeys(); e.hasMoreElements();) {
// Obtenemos el objeto
Object obj = e.nextElement();
props.put(obj, props1.getObject(obj.toString()));
}
Session session = Session.getInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(props1.getString("username"), props1.getString("password"));
}
});
// Create a default MimeMessage object.
SMTPMessage message = new SMTPMessage(session);
MimeMultipart multiparte = new MimeMultipart("related");
MimeBodyPart texto = new MimeBodyPart();
texto.setText(mensaje.toString(), "US-ASCII", "html");
multiparte.addBodyPart(texto);
String rutaLogos = configuracionDAO.getRutaLogos();
MimeBodyPart imagePart = new MimeBodyPart();
imagePart.attachFile(new File(rutaLogos + ConstantesGenerales.LOGO_PUSHMATE));
imagePart.setContentID(ConstantesGenerales.ETIQUETA_PUSHMATE);
imagePart.setDisposition(MimeBodyPart.INLINE);
multiparte.addBodyPart(imagePart);
MimeBodyPart imagePart2 = new MimeBodyPart();
imagePart2.attachFile(new File(rutaLogos + ConstantesGenerales.LOGO_PROXIMATE));
imagePart2.setContentID(ConstantesGenerales.ETIQUETA_PROXIMATE);
imagePart2.setDisposition(MimeBodyPart.INLINE);
multiparte.addBodyPart(imagePart2);
message.setContent(multiparte);
message.setSubject(MimeUtility.encodeText(titulo, "utf-8", "B"));
message.setSentDate(new Date());
message.setFrom(new InternetAddress(props1.getString("username")));
if (archivo != null) {
BodyPart adjunto = new MimeBodyPart();
adjunto.setFileName(archivo.getName());
adjunto.setDataHandler(new DataHandler(new FileDataSource(archivo)));
multiparte.addBodyPart(adjunto);
}
for (int i = 0; i < destinatarios.length; i++) {
message.addRecipient(Message.RecipientType.TO, new InternetAddress(destinatarios[i]));
}
// Send message
// Transport.send(message);
Transport t = session.getTransport("smtp");
t.connect(props1.getString("username"), props1.getString("password"));
t.sendMessage(message, message.getAllRecipients());
t.close();
// } catch (Exception e) {
// e.printStackTrace();
// //enviarCorreo();
// }
return true;
}
这是我的属性:
username=services@host.com
password=Password
mail.host=smtpout.secureserver.net
mail.smtp.auth=true
mail.smtp.starttls.enable=false
mail.smtp.host=smtpout.secureserver.net
mail.smtp.port=465
mail.smtp.ssl.enable=true
mail.smtp.socketFactory.port=465
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
mail.smtp.socketFactory.fallback=false
mail.transport.protocol=smtp
我也尝试使用此属性:
from=services@host.com
username=AKIAJK7XNV45BJ4YX7WQ
password=ArPec8p374QUSfHo80sAS4m5ShAgo/iOYlNQOv6/XTn+
mail.host=email-smtp.us-east-1.amazonaws.com
mail.smtp.auth=true
mail.smtp.port=587
mail.smtp.starttls.enable=true
mail.smtp.starttls.required=true
mail.transport.protocol=smtp
我什至尝试放置属性,所以我不使用 TLS 或 SSL,但在我的克隆实例中,我总是得到相同的异常,在我的原始实例中发送邮件。有什么问题?提前致谢。