Hi, I don't think this is anyhow related to Wicket. Here are the GMail SMTP related props I use successfully:
mail.server.host=smtp.gmail.com mail.server.port=587 [email protected] mail.server.password=my-passwd mail.server.starttls.enable=true You may also check the docs of SMTPAppender in Logback. There are examples for configuring it with GMail. I believe the problem is in these settings. On Tue, Aug 14, 2012 at 5:34 AM, James Eliyezar <[email protected]> wrote: > Greetings to all of you. > > We recently upgraded our application to Wicket 1.5. > However, after upgrading we had problems sending email using SSL from our > application. > This may not be related to wicket at all but I promise we didn't change any > dependencies other than wicket's. > What amuses me is that it works as expected in our older versions which > still use Wicket 1.4.x. > Both the older version and the current version were run using the same JRE. > > Here's the code that sends email: > > <pre> > public class MailSenderTask implements Runnable > { > private Properties smtpProperties; > private EmailMessage message; > private static final Logger logger = > LoggerFactory.getLogger(MailSenderTask.class); > > public MailSenderTask(Properties smtpProperties, EmailMessage message) > { > this.smtpProperties = smtpProperties; > this.message = message; > } > > public synchronized void sendMail() throws Exception > { > try { > if (addSSlProvider()) { > logger.info("Adding ssl provider"); > Security.addProvider(new > com.sun.net.ssl.internal.ssl.Provider()); > } else { > logger.info("Using plain text connection as ssl/tls is not > enabled"); > } > Session session = createSession(); > MimeMessage mimeMessage = new MimeMessage(session); > mimeMessage.setSender(new InternetAddress(message.getSender())); > mimeMessage.setSubject(message.getSubject()); > > if (message.getRecipients().indexOf(',') > 0) { > mimeMessage.setRecipients(Message.RecipientType.TO, > InternetAddress.parse(message.getRecipients())); > } else { > mimeMessage.setRecipient(Message.RecipientType.TO, new > InternetAddress(message.getRecipients())); > } > > MimeBodyPart bodyPart = new MimeBodyPart(); > bodyPart.setContent(message.getBody(), "text/html"); > > Multipart multipart = new MimeMultipart(); > multipart.addBodyPart(bodyPart); > > if (message.getAttachments() != null && > message.getAttachments().length > 0) { > for (File file : message.getAttachments()) { > logger.debug("Adding {} as an attachment", file); > MimeBodyPart attachmentPart = new MimeBodyPart(); > attachmentPart.attachFile(file); > multipart.addBodyPart(attachmentPart); > } > } > > mimeMessage.setContent(multipart); > > logger.info("Sending mail..."); > Transport.send(mimeMessage); > logger.info("Mail sent to {}", message.getRecipients()); > } catch (Exception ex) { > throw new EmailException("Error occurred while sending mail", > ex); > } > } > > private boolean addSSlProvider() > { > String sslEnabledProperty = > smtpProperties.getProperty("mail.smtp.starttls.enable"); > if (StringUtils.isNotEmpty(sslEnabledProperty)) { > return Boolean.parseBoolean(sslEnabledProperty); > } > return false; > } > > private Session createSession() > { > Session session = null; > if > (Boolean.parseBoolean(smtpProperties.getProperty("mail.smtp.auth"))) { > logger.info("Creating session with authentication"); > session = createSessionWithAuthentication(smtpProperties); > } else { > logger.info("Creating default session"); > session = createDefaultSession(smtpProperties); > } > return session; > } > > private Session createDefaultSession(final Properties smtpProperties) > { > return Session.getInstance(smtpProperties); > } > > private Session createSessionWithAuthentication(final Properties > smtpProperties) > { > return Session.getInstance(smtpProperties, > new Authenticator() > { > @Override > protected PasswordAuthentication > getPasswordAuthentication() > { > return new > PasswordAuthentication(smtpProperties.getProperty("smtp.username"), > > smtpProperties.getProperty("smtp.password")); > } > }); > } > > public void run() > { > if (smtpProperties != null && message != null) { > try { > sendMail(); > } catch (Exception ex) { > throw new EmailException("Error", ex); > } > } > } > } > </pre> > > These are the SMTP properties that were set: > > <pre> > mail.smtp.socketFactory.fallback:false > mail.smtp.socketFactory.class:javax.net.ssl.SSLSocketFactory > mail.transport.protocol:smtp > mail.smtp.connectiontimeout:10000 > mail.smtp.host:smtp.gmail.com > mail.smtp.timeout:10000 > mail.smtp.starttls.enable:true > mail.smtp.port:465 > mail.smtp.auth:true > mail.smtp.socketFactory.port:465 > mail.smtp.quitwait:false > smtp.username:[email protected] > smtp.password: bar > </pre> > > This is the exception thrown: > > <pre> > Caused by: javax.mail.MessagingException: Could not connect to SMTP host: > smtp.gmail.com, port: 465 > at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934) > ~[mail-1.4.4.jar:1.4.4] > at > com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638) > ~[mail-1.4.4.jar:1.4.4] > at javax.mail.Service.connect(Service.java:297) ~[mail-1.4.jar:1.4] > at javax.mail.Service.connect(Service.java:156) ~[mail-1.4.jar:1.4] > at javax.mail.Service.connect(Service.java:105) ~[mail-1.4.jar:1.4] > at javax.mail.Transport.send0(Transport.java:168) ~[mail-1.4.jar:1.4] > at javax.mail.Transport.send(Transport.java:98) ~[mail-1.4.jar:1.4] > at > com.mcruncher.core.module.email.util.MailSenderTask.sendMail(MailSenderTask.java:75) > ~[MailSenderTask.class:2.7.0-SNAPSHOT] > ... 56 common frames omitted > Caused by: javax.net.ssl.SSLException: java.lang.RuntimeException: > Unexpected error: java.security.InvalidAlgorithmParameterException: the > trustAnchors parameter must be non-empty > at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:190) > ~[na:1.6] > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1731) > ~[na:1.6] > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1692) > ~[na:1.6] > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1675) > ~[na:1.6] > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1204) > ~[na:1.6] > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1181) > ~[na:1.6] > at > com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:507) > ~[mail-1.4.4.jar:1.4] > at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238) > ~[mail-1.4.4.jar:1.4] > at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900) > ~[mail-1.4.4.jar:1.4.4] > ... 63 common frames omitted > Caused by: java.lang.RuntimeException: Unexpected error: > java.security.InvalidAlgorithmParameterException: the trustAnchors > parameter must be non-empty > at sun.security.validator.PKIXValidator.<init>(PKIXValidator.java:57) > ~[na:1.6.0_33] > at sun.security.validator.Validator.getInstance(Validator.java:161) > ~[na:1.6.0_33] > at > com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:108) > ~[na:1.6] > at > com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:204) > ~[na:1.6] > at > com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:249) > ~[na:1.6] > at > com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1185) > ~[na:1.6] > at > com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:136) > ~[na:1.6] > at > com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593) > ~[na:1.6] > at > com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529) > ~[na:1.6] > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:925) > ~[na:1.6] > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1170) > ~[na:1.6] > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1197) > ~[na:1.6] > ... 67 common frames omitted > Caused by: java.security.InvalidAlgorithmParameterException: the > trustAnchors parameter must be non-empty > at > java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:183) > ~[na:1.6.0_33] > at java.security.cert.PKIXParameters.<init>(PKIXParameters.java:103) > ~[na:1.6.0_33] > at > java.security.cert.PKIXBuilderParameters.<init>(PKIXBuilderParameters.java:87) > ~[na:1.6.0_33] > at sun.security.validator.PKIXValidator.<init>(PKIXValidator.java:55) > ~[na:1.6.0_33] > ... 78 common frames omitted > </pre> > > Eagerly awaiting fellow wicket users' help.... > > -- > Thanks & regards > James Selvakumar > mcruncher.com -- Martin Grigorov jWeekend Training, Consulting, Development http://jWeekend.com --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
