diff --git a/core-java-modules/core-java-networking/src/main/java/com/baeldung/mail/EmailService.java b/core-java-modules/core-java-networking/src/main/java/com/baeldung/mail/EmailService.java index 34e8440fb558..0318bda04837 100644 --- a/core-java-modules/core-java-networking/src/main/java/com/baeldung/mail/EmailService.java +++ b/core-java-modules/core-java-networking/src/main/java/com/baeldung/mail/EmailService.java @@ -2,8 +2,17 @@ import java.io.File; import java.net.URI; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; import java.util.Properties; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; + import jakarta.mail.Authenticator; import jakarta.mail.Message; import jakarta.mail.Multipart; @@ -40,6 +49,33 @@ public EmailService(String host, int port) { prop.put("mail.smtp.port", port); } + public EmailService(String host, int port, boolean bypassServerCertError) throws NoSuchAlgorithmException, KeyManagementException { + prop = new Properties(); + prop.put("mail.smtp.host", host); + prop.put("mail.smtp.port", port); + if (bypassServerCertError) { + + prop.put("mail.smtp.ssl.trust", "*"); + prop.put("mail.smtp.ssl.checkserveridentity", false); + + // use this when SMTPS protocol + // SSLContext sslContext = SSLContext.getInstance("TLS"); + // sslContext.init(null, trustAllCerts, new java.security.SecureRandom()); + // SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); + // prop.put("mail.smtp.ssl.enable", "true"); + // prop.put("mail.smtp.ssl.socketFactory", sslSocketFactory); + // prop.put("mail.smtp.ssl.trust", "*"); + } + } + + TrustManager[] trustAllCerts = new TrustManager[] { + new X509TrustManager() { + public void checkClientTrusted(X509Certificate[] certs, String authType) throws CertificateException{} + public void checkServerTrusted(X509Certificate[] certs, String authType) throws CertificateException{} + public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0];} + } + }; + public static void main(String... args) { try { new EmailService("smtp.mailtrap.io", 25, "87ba3d9555fae8", "91cb4379af43ed").sendMail();