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]

Reply via email to