Setup SMTP in Jaspersoft to email scheduled reports
search cancel

Setup SMTP in Jaspersoft to email scheduled reports

book

Article ID: 93228

calendar_today

Updated On:

Products

Spectrum Network Observability

Issue/Introduction

We are trying to set up js.quartz.properties to define SMTP server in order to email scheduled reports.

Our SMTP server does not require credentials - if I comment out the section for credentials, Jasper Tomcat does not start (errors out).

How can I set up SMTP server in this file w/o using credentials?

...

After migrating our Jaspersoft install from RHEL7.x to RHEL 8.x, we are no longer receiving scheduled report emails.

we're running DX NetOps 24.3.4, including Spectrum on our production environment. This includes Jaspersoft 7.9.2.3 on a RHEL8 VM.

Since migrating from RHEL7 to RHEL8, we're no longer receiving automated emails of reports like we used to. Is there an email setting that needs to be configured that didn't get migrated over? 

Environment

Release: All Supported Releases
Component: SPCJSP - Jaspersoft for Spectrum

Cause

The SMTP server needs to be configure for Jaspersoft to email scheduled reports. 

Since a Jaspersoft migration means a fresh install with imported settings, some files may need to be reconfigured on the new host.

Error seen in jasperserver.log

E.G.

/opt/CA/SharedComponents/CA Business Intelligence/apache-tomcat/webapps/jasperserver-pro/WEB-INF/logs/jasperserver.log

...

2025-08-02T15:05:00,761 ERROR ReportExecutionJob,JasperServerScheduler_Worker-1:327 - The job error notification was not completed. An error occurred while sending it. (Error UID: 2c0323ef-3dec-45fb-afc4-413b86c29e20) org.springframework.mail.MailSendException: Mail server connection failed; nested exception is com.sun.mail.util.MailConnectException: Couldn't connect to host, port: mail.example.com, 25; timeout -1;
  nested exception is:
    java.net.UnknownHostException: mail.example.com. Failed messages: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: mail.example.com, 25; timeout -1;
  nested exception is:
    java.net.UnknownHostException: mail.example.com; message exception details (1) are:
Failed message 1:
com.sun.mail.util.MailConnectException: Couldn't connect to host, port: mail.example.com, 25; timeout -1;
  nested exception is:
    java.net.UnknownHostException: mail.example.com
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2209)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:740)
    at javax.mail.Service.connect(Service.java:366)
    at org.springframework.mail.javamail.JavaMailSenderImpl.connectTransport(JavaMailSenderImpl.java:518)
    at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:437)
    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:361)
    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:356)
    at com.jaspersoft.jasperserver.api.engine.scheduling.quartz.ReportExecutionJobMailNotificationImpl.sendMailNotification(ReportExecutionJobMailNotificationImpl.java:141)
    at com.jaspersoft.jasperserver.api.engine.scheduling.quartz.ReportExecutionJob.sendMailNotification(ReportExecutionJob.java:746)
    at com.jaspersoft.jasperserver.api.engine.scheduling.quartz.ReportExecutionJob.executeAndSendReport(ReportExecutionJob.java:526)
    at com.jaspersoft.jasperserver.api.engine.scheduling.quartz.ReportExecutionJob.execute(ReportExecutionJob.java:219)
    at com.jaspersoft.ji.report.options.engine.ReportOptionsExecutionJob.execute(ReportOptionsExecutionJob.java:45)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: java.net.UnknownHostException: mail.example.com
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:607)
    at java.net.Socket.connect(Socket.java:556)
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:359)
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238)
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2175)
    ... 13 more

Resolution

To set the SMTP host information for Jaspersoft, update the 'report.scheduler.web.deployment.uri' attribute value in the 'js.quartz.properties' file, which is located at <jasperserver-pro>/WEB-INF/js.quartz.properties.

E.G.

/opt/CA/SharedComponents/CA Business Intelligence/apache-tomcat/webapps/jasperserver-pro/WEB-INF/js.quartz.properties


report.scheduler.web.deployment.uri=http://localhost:8080/jasperserver-pro

report.scheduler.mail.sender.host=mail.example.com
report.scheduler.mail.sender.username=admin
report.scheduler.mail.sender.password=password
report.scheduler.mail.sender.from=[email protected]
report.scheduler.mail.sender.protocol=smtp
report.scheduler.mail.sender.port=25

- Be sure to edit the report.scheduler.web.deployment.uri and change "localhost:8080" to be the actual Jaspersoft hostname
- If the SMTP server does not require login credentials, these lines can be left blank. E.G.:
report.scheduler.mail.sender.username=
report.scheduler.mail.sender.password=

These lines cannot be commented out, they must be left blank

 

In addition, if the SMTP server connection is over a secure connection "SMTPS" then you may also need to enable SMTPS in jasperserver-pro\WEB-INF\applicationContext-report-scheduling.xml file:

E.G.

/opt/CA/SharedComponents/CA Business Intelligence/apache-tomcat/webapps/jasperserver-pro/WEB-INF/applicationContext-report-scheduling.xml

 

<prop key="mail.smtps.auth">true</prop> 


<bean id="reportSchedulerMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${report.scheduler.mail.sender.host}"/>
<property name="username" value="${report.scheduler.mail.sender.username}"/>
<property name="password" value="${report.scheduler.mail.sender.password}"/>
<property name="protocol" value="${report.scheduler.mail.sender.protocol}"/>
<property name="port" value="${report.scheduler.mail.sender.port}"/>
<property name="javaMailProperties">
<props>
<prop key="mail.smtps.auth">true</prop>
</props>
</property>
</bean>


- Restart Jasersoft Tomcat for changes to take effect.

Additional Information

Please reference the "How to run Reports Using JasperReports Server" section of the Spectrum documentation for more information.


Please reference the "Setting Up the Connection to your Outbound Email Server" for more information

 

Additional reference: Scheduling Reports