Formulář a třídy pro odesílání e-mailů. Implementováno odesílání PDF
sestav mailem.
This commit is contained in:
@@ -308,6 +308,13 @@
|
|||||||
<artifactId>DynamicJasper-core-fonts</artifactId>
|
<artifactId>DynamicJasper-core-fonts</artifactId>
|
||||||
<version>1.0</version>
|
<version>1.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Java Mail API -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.mail</groupId>
|
||||||
|
<artifactId>mail</artifactId>
|
||||||
|
<version>1.4.3</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- Test -->
|
<!-- Test -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
package info.bukova.isspst.mail;
|
||||||
|
|
||||||
|
import org.springframework.mail.SimpleMailMessage;
|
||||||
|
|
||||||
|
public class MailMessage extends SimpleMailMessage {
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -3240551712942170018L;
|
||||||
|
|
||||||
|
private boolean html;
|
||||||
|
private String attachementName;
|
||||||
|
private byte[] attachementData;
|
||||||
|
private String contentType;
|
||||||
|
|
||||||
|
public boolean isHtml() {
|
||||||
|
return html;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHtml(boolean html) {
|
||||||
|
this.html = html;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] getAttachementData() {
|
||||||
|
return attachementData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAttachementData(byte[] attachementData) {
|
||||||
|
this.attachementData = attachementData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getContentType() {
|
||||||
|
return contentType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setContentType(String contentType) {
|
||||||
|
this.contentType = contentType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAttachementName() {
|
||||||
|
return attachementName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAttachementName(String attachementName) {
|
||||||
|
this.attachementName = attachementName;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package info.bukova.isspst.mail;
|
||||||
|
|
||||||
|
public interface Mailer {
|
||||||
|
|
||||||
|
public void send(MailMessage message);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
package info.bukova.isspst.mail;
|
||||||
|
|
||||||
|
import javax.mail.MessagingException;
|
||||||
|
import javax.mail.internet.MimeMessage;
|
||||||
|
|
||||||
|
import org.springframework.core.io.ByteArrayResource;
|
||||||
|
import org.springframework.core.io.InputStreamSource;
|
||||||
|
import org.springframework.mail.MailParseException;
|
||||||
|
import org.springframework.mail.javamail.JavaMailSender;
|
||||||
|
import org.springframework.mail.javamail.MimeMessageHelper;
|
||||||
|
|
||||||
|
public class MailerWithAttachement implements Mailer {
|
||||||
|
|
||||||
|
private JavaMailSender sender;
|
||||||
|
private String from;
|
||||||
|
|
||||||
|
public MailerWithAttachement(JavaMailSender sender) {
|
||||||
|
this.sender = sender;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void send(MailMessage message) {
|
||||||
|
MimeMessage mimeMessage = sender.createMimeMessage();
|
||||||
|
|
||||||
|
try {
|
||||||
|
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
|
||||||
|
|
||||||
|
if (message.getFrom() == null || message.getFrom().isEmpty()) {
|
||||||
|
if (from == null || from.isEmpty()) {
|
||||||
|
message.setFrom("tomcat@is.bukova.info");
|
||||||
|
} else {
|
||||||
|
message.setFrom(from);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
helper.setFrom(message.getFrom());
|
||||||
|
helper.setTo(message.getTo());
|
||||||
|
helper.setSubject(message.getSubject());
|
||||||
|
helper.setText(message.getText(), message.isHtml());
|
||||||
|
|
||||||
|
if (message.getAttachementData() != null) {
|
||||||
|
InputStreamSource source = new ByteArrayResource(message.getAttachementData());
|
||||||
|
helper.addAttachment(message.getAttachementName(), source, message.getContentType());
|
||||||
|
}
|
||||||
|
} catch (MessagingException e) {
|
||||||
|
throw new MailParseException(e);
|
||||||
|
}
|
||||||
|
sender.send(mimeMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFrom(String from) {
|
||||||
|
this.from = from;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package info.bukova.isspst.mail;
|
||||||
|
|
||||||
|
import org.springframework.mail.javamail.JavaMailSender;
|
||||||
|
|
||||||
|
public class SimpleMailer implements Mailer {
|
||||||
|
|
||||||
|
private JavaMailSender sender;
|
||||||
|
private String from;
|
||||||
|
|
||||||
|
public SimpleMailer(JavaMailSender sender) {
|
||||||
|
this.sender = sender;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void send(MailMessage message) {
|
||||||
|
if (message.getFrom() == null || message.getFrom().isEmpty()) {
|
||||||
|
if (from == null || from.isEmpty()) {
|
||||||
|
message.setFrom("tomcat@is.bukova.info");
|
||||||
|
} else {
|
||||||
|
message.setFrom(from);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sender.send(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFrom(String from) {
|
||||||
|
this.from = from;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
package info.bukova.isspst.ui.mail;
|
||||||
|
|
||||||
|
import info.bukova.isspst.mail.MailMessage;
|
||||||
|
import info.bukova.isspst.mail.Mailer;
|
||||||
|
import info.bukova.isspst.reporting.Generator;
|
||||||
|
import info.bukova.isspst.reporting.GeneratorFactory;
|
||||||
|
import info.bukova.isspst.reporting.ReportDefinition;
|
||||||
|
|
||||||
|
import org.zkoss.bind.annotation.BindingParam;
|
||||||
|
import org.zkoss.bind.annotation.Command;
|
||||||
|
import org.zkoss.bind.annotation.ExecutionArgParam;
|
||||||
|
import org.zkoss.bind.annotation.Init;
|
||||||
|
import org.zkoss.zk.ui.select.annotation.WireVariable;
|
||||||
|
import org.zkoss.zul.Window;
|
||||||
|
|
||||||
|
public class MailForm {
|
||||||
|
|
||||||
|
@WireVariable
|
||||||
|
private Mailer mailer;
|
||||||
|
@WireVariable
|
||||||
|
private ReportDefinition reportDefinition;
|
||||||
|
@WireVariable
|
||||||
|
private GeneratorFactory genFactory;
|
||||||
|
private MailMessage message;
|
||||||
|
private String to;
|
||||||
|
private String attachement;
|
||||||
|
private boolean report;
|
||||||
|
|
||||||
|
@Init
|
||||||
|
public void init(@ExecutionArgParam("report") Boolean report) {
|
||||||
|
message = new MailMessage();
|
||||||
|
message.setHtml(true);
|
||||||
|
this.report = report;
|
||||||
|
if (report) {
|
||||||
|
attachement = "report.pdf";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command
|
||||||
|
public void send(@BindingParam("window") Window window) {
|
||||||
|
message.setTo(to);
|
||||||
|
if (report) {
|
||||||
|
Generator generator = genFactory.createGenerator(reportDefinition);
|
||||||
|
message.setAttachementData(generator.generate());
|
||||||
|
message.setAttachementName("report.pdf");
|
||||||
|
message.setContentType("application/pdf");
|
||||||
|
}
|
||||||
|
|
||||||
|
mailer.send(message);
|
||||||
|
window.detach();
|
||||||
|
}
|
||||||
|
|
||||||
|
public MailMessage getMessage() {
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMessage(MailMessage message) {
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTo() {
|
||||||
|
return to;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTo(String to) {
|
||||||
|
this.to = to;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAttachement() {
|
||||||
|
return attachement;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,6 +1,12 @@
|
|||||||
package info.bukova.isspst.ui.reporting;
|
package info.bukova.isspst.ui.reporting;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.zkoss.bind.annotation.Command;
|
||||||
import org.zkoss.bind.annotation.Init;
|
import org.zkoss.bind.annotation.Init;
|
||||||
|
import org.zkoss.zk.ui.Executions;
|
||||||
|
import org.zkoss.zul.Window;
|
||||||
|
|
||||||
public class ReportVM {
|
public class ReportVM {
|
||||||
|
|
||||||
@@ -8,5 +14,13 @@ public class ReportVM {
|
|||||||
public void init() {
|
public void init() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Command
|
||||||
|
public void send() {
|
||||||
|
Map<String, Boolean> params = new HashMap<String, Boolean>();
|
||||||
|
params.put("report", true);
|
||||||
|
Window mailForm = (Window) Executions.createComponents("/app/mailForm.zul", null, params);
|
||||||
|
mailForm.doModal();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,6 +134,12 @@ ReportTitle=Nadpis sestavy:
|
|||||||
ReportOptions=Volby sestavy
|
ReportOptions=Volby sestavy
|
||||||
ReportNoOptions=Žádná nestavení
|
ReportNoOptions=Žádná nestavení
|
||||||
|
|
||||||
|
MailForm=Odeslání e-mailu
|
||||||
|
MailFor=Komu:
|
||||||
|
MailSubject=Předmět:
|
||||||
|
MailSend=Odeslat
|
||||||
|
MailAttachement=Příloha:
|
||||||
|
|
||||||
Error=Chyba
|
Error=Chyba
|
||||||
ErrorRights=K vykobání této operace nemáte dostatečná oprávnění
|
ErrorRights=K vykobání této operace nemáte dostatečná oprávnění
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
mail.from=kosef.rokos@gmail.com
|
||||||
|
mail.host=smtp.gmail.com
|
||||||
|
mail.port=587
|
||||||
|
mail.useauth=true
|
||||||
|
mail.usessl=true
|
||||||
|
mail.username=josef.rokos@gmail.com
|
||||||
|
mail.password=XXXXXX
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
|
||||||
|
|
||||||
|
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
|
||||||
|
<property name="host" value="${mail.host}"/>
|
||||||
|
<property name="port" value="${mail.port}"/>
|
||||||
|
<property name="username" value="${mail.username}"/>
|
||||||
|
<property name="password" value="${mail.password}"/>
|
||||||
|
<property name="defaultEncoding" value="UTF-8"/>
|
||||||
|
<property name="javaMailProperties">
|
||||||
|
<props>
|
||||||
|
<prop key="mail.smtp.auth">${mail.useauth}</prop>
|
||||||
|
<prop key="mail.smtp.starttls.enable">${mail.usessl}</prop>
|
||||||
|
</props>
|
||||||
|
</property>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean id="mailer" class="info.bukova.isspst.mail.MailerWithAttachement">
|
||||||
|
<constructor-arg ref="mailSender"/>
|
||||||
|
<property name="from" value="${mail.from}"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean id="simpleMailer" class="info.bukova.isspst.mail.SimpleMailer">
|
||||||
|
<constructor-arg ref="mailSender"/>
|
||||||
|
<property name="from" value="${mail.from}"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<!-- <bean id="mailer" class="info.bukova.rsfaktura.services.mail.ThreadMailer"> -->
|
||||||
|
<!-- <constructor-arg ref="attachementMailer"/> -->
|
||||||
|
<!-- </bean> -->
|
||||||
|
|
||||||
|
<!-- <bean id="attachementMailer" class="info.bukova.rsfaktura.services.mail.AttachementMailer"> -->
|
||||||
|
<!-- <constructor-arg ref="tmpStorage"/> -->
|
||||||
|
<!-- <property name="from" value="josef.rokos@gmail.com"/> -->
|
||||||
|
<!-- <property name="sender" ref="mailSender"/> -->
|
||||||
|
<!-- </bean> -->
|
||||||
|
|
||||||
|
<!-- <bean id="messageBuilder" class="info.bukova.rsfaktura.services.mail.MailMessageBuilder"> -->
|
||||||
|
<!-- <constructor-arg ref="tmpStorage"/> -->
|
||||||
|
<!-- </bean> -->
|
||||||
|
|
||||||
|
</beans>
|
||||||
@@ -16,6 +16,7 @@
|
|||||||
<list>
|
<list>
|
||||||
<value>/WEB-INF/jdbc.properties</value>
|
<value>/WEB-INF/jdbc.properties</value>
|
||||||
<value>/WEB-INF/ldap.properties</value>
|
<value>/WEB-INF/ldap.properties</value>
|
||||||
|
<value>/WEB-INF/mail.properties</value>
|
||||||
</list>
|
</list>
|
||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
@@ -75,6 +76,8 @@
|
|||||||
|
|
||||||
<import resource="database-auth.xml"/>
|
<import resource="database-auth.xml"/>
|
||||||
<!-- <import resource="ldap-auth.xml"/> -->
|
<!-- <import resource="ldap-auth.xml"/> -->
|
||||||
|
|
||||||
|
<import resource="mail-services.xml"/>
|
||||||
|
|
||||||
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
|
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
|
||||||
<property name="targetClass" value="org.springframework.security.core.context.SecurityContextHolder" />
|
<property name="targetClass" value="org.springframework.security.core.context.SecurityContextHolder" />
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
<?page title="Mail" contentType="text/html;charset=UTF-8"?>
|
||||||
|
<zk>
|
||||||
|
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
|
||||||
|
<window id="mailWin" border="normal" apply="org.zkoss.bind.BindComposer"
|
||||||
|
viewModel="@id('vm') @init('info.bukova.isspst.ui.mail.MailForm')" width="500px" closable="true">
|
||||||
|
<caption zclass="form-caption" label="${labels.MailForm}" />
|
||||||
|
<grid>
|
||||||
|
<columns>
|
||||||
|
<column hflex="min"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<label value="${labels.MailFor}"/> <textbox value="@bind(vm.to)" width="100%"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<label value="${labels.MailSubject }"/> <textbox value="@bind(vm.message.subject)" width="100%"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<label value="${labels.MailAttachement}"/> <textbox value="@load(vm.attachement)" readonly="true" width="100%"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
<vbox>
|
||||||
|
<ckeditor width="470px" height="200px" value="@bind(vm.message.text)" toolbar="Basic"/>
|
||||||
|
<hbox>
|
||||||
|
<button label="${labels.MailSend}" onClick="@command('send', window=mailWin)"/> <button label="${labels.ButtonStorno}" onClick="mailWin.detach()"/>
|
||||||
|
</hbox>
|
||||||
|
</vbox>
|
||||||
|
</window>
|
||||||
|
</zk>
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
viewModel="@id('vm') @init('info.bukova.isspst.ui.reporting.ReportVM')">
|
viewModel="@id('vm') @init('info.bukova.isspst.ui.reporting.ReportVM')">
|
||||||
<caption src="/img/print.png" zclass="form-caption" label="${labels.ReportReport}" />
|
<caption src="/img/print.png" zclass="form-caption" label="${labels.ReportReport}" />
|
||||||
<toolbar>
|
<toolbar>
|
||||||
<toolbarbutton image="/img/send.png" tooltiptext="${labels.ReportSend}"/>
|
<toolbarbutton image="/img/send.png" tooltiptext="${labels.ReportSend}" onClick="@command('send')"/>
|
||||||
</toolbar>
|
</toolbar>
|
||||||
<iframe width="800px" height="660px" src="/api/report.pdf"/>
|
<iframe width="800px" height="660px" src="/api/report.pdf"/>
|
||||||
</window>
|
</window>
|
||||||
|
|||||||
Reference in New Issue
Block a user