Email notifications with Java mail API stopped working

hi

i have had email notifications working for quite sometime very reliably but about a month or so ago they stopped working. I am using the following API with javax.mail-1.5.6.jar
Should i try a newer version of javax.mail jar ?

anyone else run in to this situation. I have included the errors from the logs below as well.

i know email account / password etc are correct.

Properties props = new Properties();
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.socketFactory.port", "465");
    props.put("mail.smtp.socketFactory.class",
            "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.port", "465");

    Session session = Session.getDefaultInstance(props,
        new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("username","password");
            }
        });

    try {

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("from@no-spam.com"));
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse("to@no-spam.com"));
        message.setSubject("Testing Subject");
        message.setText("Dear Mail Crawler," +
                "\n\n No spam to my email, please!");

        Transport.send(message);

        System.out.println("Done");

    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }
}

ERRORs:


EBUG 2020-08-04 00:23:17,792 (Drools): rule "Send mail" // (package org.openremote.controller.model.event)
	Declarations 
	LHS objects(antecedents)
		Class: "Switch"
		Fields: 
			Event Name: 	"Send mail sensor"
			Event Value: 	"on"

ERROR 2020-08-04 00:23:22,832 (Drools): Error in executing rule : Send mail sensor:Exception executing consequence for rule "Send mail" in org.openremote.controller.model.event: java.lang.RuntimeException: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.gmail.com, 465; timeout -1;
  nested exception is:
	java.net.UnknownHostException: smtp.gmail.com
	Event Switch Event (ID = 408796, Source = 'Send mail sensor', Switch Value = 'on', Switch State = ON) not processed!
Exception executing consequence for rule "Send mail" in org.openremote.controller.model.event: java.lang.RuntimeException: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.gmail.com, 465; timeout -1;
  nested exception is:
	java.net.UnknownHostException: smtp.gmail.com
	at org.drools.core.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)
	at org.drools.core.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1100)
	at org.drools.core.phreak.RuleExecutor.fire(RuleExecutor.java:121)
	at org.drools.core.phreak.RuleExecutor.evaluateNetworkAndFire(RuleExecutor.java:74)
	at org.drools.core.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1007)
	at org.drools.core.common.DefaultAgenda.fireLoop(DefaultAgenda.java:1350)
	at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1288)
	at org.drools.core.impl.StatefulKnowledgeSessionImpl.internalFireAllRules(StatefulKnowledgeSessionImpl.java:1306)
	at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1297)
	at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1278)
	at org.openremote.controller.statuscache.rules.RuleEngine.push(RuleEngine.java:203)
	at org.openremote.controller.statuscache.EventProcessorChain.push(EventProcessorChain.java:196)
	at org.openremote.controller.statuscache.StatusCache.update(StatusCache.java:293)
	at org.openremote.controller.model.sensor.Sensor.update(Sensor.java:367)
	at org.openremote.controller.model.sensor.Sensor$DeviceReader.run(Sensor.java:655)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.RuntimeException: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.gmail.com, 465; timeout -1;
  nested exception is:
	java.net.UnknownHostException: smtp.gmail.com
	at org.openremote.controller.model.event.Rule_Send_mail211660578.defaultConsequence(Rule_Send_mail211660578.java:38)
	at org.openremote.controller.model.event.Rule_Send_mail211660578DefaultConsequenceInvokerGenerated.evaluate(Unknown Source)
	at org.openremote.controller.model.event.Rule_Send_mail211660578DefaultConsequenceInvoker.evaluate(Unknown Source)
	at org.drools.core.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1089)
	... 14 more
Caused by: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.gmail.com, 465; timeout -1;
  nested exception is:
	java.net.UnknownHostException: smtp.gmail.com
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2118)
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:712)
	at javax.mail.Service.connect(Service.java:388)
	at javax.mail.Service.connect(Service.java:246)
	at javax.mail.Service.connect(Service.java:195)
	at javax.mail.Transport.send0(Transport.java:254)
	at javax.mail.Transport.send(Transport.java:124)
	at org.openremote.controller.model.event.Rule_Send_mail211660578.defaultConsequence(Rule_Send_mail211660578.java:33)
	... 17 more
Caused by: java.net.UnknownHostException: smtp.gmail.com
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:606)
	at java.net.Socket.connect(Socket.java:555)
	at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:331)
	at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238)
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2084)
	... 24 more
ERROR 2020-08-04 00:23:22,848 (Drools): Root Cause: 

java.lang.RuntimeException: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.gmail.com, 465; timeout -1;
  nested exception is:
	java.net.UnknownHostException: smtp.gmail.com
	at org.openremote.controller.model.event.Rule_Send_mail211660578.defaultConsequence(Rule_Send_mail211660578.java:38)
	at org.openremote.controller.model.event.Rule_Send_mail211660578DefaultConsequenceInvokerGenerated.evaluate(Unknown Source)
	at org.openremote.controller.model.event.Rule_Send_mail211660578DefaultConsequenceInvoker.evaluate(Unknown Source)
	at org.drools.core.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1089)
	at org.drools.core.phreak.RuleExecutor.fire(RuleExecutor.java:121)
	at org.drools.core.phreak.RuleExecutor.evaluateNetworkAndFire(RuleExecutor.java:74)
	at org.drools.core.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1007)
	at org.drools.core.common.DefaultAgenda.fireLoop(DefaultAgenda.java:1350)
	at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1288)
	at org.drools.core.impl.StatefulKnowledgeSessionImpl.internalFireAllRules(StatefulKnowledgeSessionImpl.java:1306)
	at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1297)
	at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1278)
	at org.openremote.controller.statuscache.rules.RuleEngine.push(RuleEngine.java:203)
	at org.openremote.controller.statuscache.EventProcessorChain.push(EventProcessorChain.java:196)
	at org.openremote.controller.statuscache.StatusCache.update(StatusCache.java:293)
	at org.openremote.controller.model.sensor.Sensor.update(Sensor.java:367)
	at org.openremote.controller.model.sensor.Sensor$DeviceReader.run(Sensor.java:655)
	at java.lang.Thread.run(Thread.java:748)
Caused by: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.gmail.com, 465; timeout -1;
  nested exception is:
	java.net.UnknownHostException: smtp.gmail.com
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2118)
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:712)
	at javax.mail.Service.connect(Service.java:388)
	at javax.mail.Service.connect(Service.java:246)
	at javax.mail.Service.connect(Service.java:195)
	at javax.mail.Transport.send0(Transport.java:254)
	at javax.mail.Transport.send(Transport.java:124)
	at org.openremote.controller.model.event.Rule_Send_mail211660578.defaultConsequence(Rule_Send_mail211660578.java:33)
	... 17 more
Caused by: java.net.UnknownHostException: smtp.gmail.com
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:606)
	at java.net.Socket.connect(Socket.java:555)
	at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:331)
	at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238)
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2084)
	... 24 more

This indicates that there are DNS resolution problems (which are AFAIK responsible for 90% of networking problems). Try to execute:

> nslookup smtp.gmail.com
> cat /etc/resolv.conf 

Thanks Michal

That was exactly the issue. not sure how or when the DNS server config got removed. I added the DNS server info and all is well

1 Like