Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package su.vistar.gps.report.reportcontrol;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.text.SimpleDateFormat;
- import java.util.*;
- import java.util.logging.Level;
- import javax.activation.DataHandler;
- import javax.activation.FileDataSource;
- import javax.mail.*;
- import javax.mail.internet.*;
- import javax.mail.Authenticator;
- import su.vistar.gps.report.jgpsreport.JGpsrepApp;
- import su.vistar.gps.report.jgpsreport.Logging;
- import su.vistar.gps.report.jgpsreport.Settings;
- import su.vistar.gps.report.jgpsreport.db.entities.PublisherParameterEntity;
- import su.vistar.gps.report.jgpsreport.db.entities.SubjectEntity;
- import su.vistar.logging.LoggerManager;
- import su.vistar.logging.helpers.Num2Dec;
- /**
- * Отправка отчета по почте.
- *
- * @author Irina Nenahova (irina.lkjh@gmail.com)
- */
- public class EmailReportPublisher extends ReportPublisher {
- /** Идентификационный номер отчета(сгенерированного). */
- private final long doneReportId;
- /** id эл.адреса. */
- private final long emailId;
- /** Параметры настройки соединения с SMTP сервером. */
- private final Properties props;
- /** id в таблице publication_config
- * (для записи об ошибке публикации) */
- private final long publishConfigId;
- /** тема письма с отчетом*/
- private final String subject;
- /** Система логов. */
- public static final Logging logging = new Logging();
- /** Логгер. */
- private static final LoggerManager log = new LoggerManager(EmailReportPublisher.class);
- public EmailReportPublisher(PublisherParameterEntity publisher)
- throws FileNotFoundException, IOException {
- this.props = Settings.emailProps;
- this.doneReportId = publisher.getDoneReportId();
- this.emailId = publisher.getDestinationId();
- this.publishConfigId = publisher.getPublisherConfigId();
- this.subject = this.getSubject();
- }
- @Override
- public void publish() throws PublishException {
- try {
- String adr = JGpsrepApp.reportControl.getEmail(emailId);
- String fileReportName = JGpsrepApp.reportControl.getReportFileName(doneReportId);
- log.log(Level.INFO, "Публикация {0} отчета по email (адрес: {1}, файл: {2})",
- new Num2Dec(doneReportId), adr, fileReportName);
- SecurityManager security = System.getSecurityManager();
- Authenticator auth = new SMTPAuthenticator();
- Session mailSession = Session.getDefaultInstance(props, auth);
- Transport transport = mailSession.getTransport();
- MimeMessage message = new MimeMessage(mailSession);
- // адрес назначения
- message.setFrom(new InternetAddress(props.getProperty("mail.smtp.user")));
- message.addRecipients(Message.RecipientType.TO, adr);
- message.setSubject(subject);
- MimeBodyPart mbp1 = new MimeBodyPart();
- mbp1.setText("");
- MimeBodyPart mbp2 = new MimeBodyPart();
- FileDataSource fds = new FileDataSource(fileReportName);
- mbp2.setDataHandler(new DataHandler(fds));
- mbp2.setFileName(fds.getName());
- Multipart mp = new MimeMultipart();
- mp.addBodyPart(mbp1);
- mp.addBodyPart(mbp2);
- message.setContent(mp);
- transport.connect();
- transport.sendMessage(message,
- message.getRecipients(Message.RecipientType.TO));
- transport.close();
- } catch (Exception ex) {
- throw new PublishException("Ошибка при отпраке отчета по email", ex);
- }
- }
- private class SMTPAuthenticator extends javax.mail.Authenticator {
- public PasswordAuthentication getPasswordAuthentication() {
- String username = props.getProperty("mail.smtp.user");
- String password = props.getProperty("mail.smtp.pwd");
- return new PasswordAuthentication(username, password);
- }
- }
- private String getSubject(){
- StringBuilder subj = new StringBuilder();
- subj.append("отчет системы Vistar ");
- SubjectEntity par = JGpsrepApp.reportControl.getParameterForSubject(doneReportId);
- if(par!=null){
- subj.append("для маршрута ");
- subj.append(par.routeId);
- subj.append(" за ");
- String dateFormat = "dd-MM-yyyy";
- SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
- String dateStr = sdf.format(par.date);
- subj.append(dateStr);
- }
- return subj.toString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement