Advertisement
Guest User

Untitled

a guest
Sep 15th, 2017
502
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.90 KB | None | 0 0
  1. package su.vistar.gps.report.reportcontrol;
  2.  
  3. import java.io.FileNotFoundException;
  4. import java.io.IOException;
  5. import java.text.SimpleDateFormat;
  6. import java.util.*;
  7. import java.util.logging.Level;
  8. import javax.activation.DataHandler;
  9. import javax.activation.FileDataSource;
  10. import javax.mail.*;
  11. import javax.mail.internet.*;
  12. import javax.mail.Authenticator;
  13. import su.vistar.gps.report.jgpsreport.JGpsrepApp;
  14. import su.vistar.gps.report.jgpsreport.Logging;
  15. import su.vistar.gps.report.jgpsreport.Settings;
  16. import su.vistar.gps.report.jgpsreport.db.entities.PublisherParameterEntity;
  17. import su.vistar.gps.report.jgpsreport.db.entities.SubjectEntity;
  18. import su.vistar.logging.LoggerManager;
  19. import su.vistar.logging.helpers.Num2Dec;
  20.  
  21. /**
  22.  * Отправка отчета по почте.
  23.  *
  24.  * @author Irina Nenahova (irina.lkjh@gmail.com)
  25.  */
  26. public class EmailReportPublisher extends ReportPublisher {
  27.  
  28.     /** Идентификационный номер отчета(сгенерированного). */
  29.     private final long doneReportId;
  30.     /** id эл.адреса. */
  31.     private final long emailId;
  32.     /** Параметры настройки соединения с SMTP сервером. */
  33.     private final Properties props;
  34.     /** id в таблице publication_config
  35.      * (для записи об ошибке публикации) */
  36.     private final long publishConfigId;
  37.     /** тема письма с отчетом*/
  38.     private final String subject;
  39.  
  40.  
  41.     /** Система логов. */
  42.     public static final Logging logging = new Logging();
  43.     /** Логгер. */
  44.     private static final LoggerManager log = new LoggerManager(EmailReportPublisher.class);
  45.  
  46.  
  47.     public EmailReportPublisher(PublisherParameterEntity publisher)
  48.             throws FileNotFoundException, IOException {
  49.         this.props = Settings.emailProps;
  50.         this.doneReportId = publisher.getDoneReportId();
  51.         this.emailId = publisher.getDestinationId();
  52.         this.publishConfigId = publisher.getPublisherConfigId();
  53.         this.subject = this.getSubject();
  54.     }
  55.  
  56.     @Override
  57.     public void publish() throws PublishException {
  58.         try {
  59.             String adr = JGpsrepApp.reportControl.getEmail(emailId);
  60.             String fileReportName = JGpsrepApp.reportControl.getReportFileName(doneReportId);
  61.  
  62.             log.log(Level.INFO, "Публикация {0} отчета по email (адрес: {1}, файл: {2})",
  63.                     new Num2Dec(doneReportId), adr, fileReportName);
  64.            
  65.             SecurityManager security = System.getSecurityManager();
  66.  
  67.             Authenticator auth = new SMTPAuthenticator();
  68.             Session mailSession = Session.getDefaultInstance(props, auth);
  69.  
  70.             Transport transport = mailSession.getTransport();
  71.  
  72.             MimeMessage message = new MimeMessage(mailSession);
  73.  
  74.             // адрес назначения
  75.             message.setFrom(new InternetAddress(props.getProperty("mail.smtp.user")));
  76.             message.addRecipients(Message.RecipientType.TO, adr);
  77.  
  78.             message.setSubject(subject);
  79.             MimeBodyPart mbp1 = new MimeBodyPart();
  80.             mbp1.setText("");
  81.  
  82.             MimeBodyPart mbp2 = new MimeBodyPart();
  83.             FileDataSource fds = new FileDataSource(fileReportName);
  84.             mbp2.setDataHandler(new DataHandler(fds));
  85.             mbp2.setFileName(fds.getName());
  86.  
  87.             Multipart mp = new MimeMultipart();
  88.             mp.addBodyPart(mbp1);
  89.             mp.addBodyPart(mbp2);
  90.  
  91.             message.setContent(mp);
  92.  
  93.             transport.connect();
  94.             transport.sendMessage(message,
  95.                     message.getRecipients(Message.RecipientType.TO));
  96.             transport.close();
  97.         } catch (Exception ex) {
  98.             throw new PublishException("Ошибка при отпраке отчета по email", ex);
  99.         }
  100.     }
  101.  
  102.     private class SMTPAuthenticator extends javax.mail.Authenticator {
  103.  
  104.         public PasswordAuthentication getPasswordAuthentication() {
  105.             String username = props.getProperty("mail.smtp.user");
  106.             String password = props.getProperty("mail.smtp.pwd");
  107.             return new PasswordAuthentication(username, password);
  108.         }
  109.     }
  110.  
  111.     private String getSubject(){
  112.         StringBuilder subj = new StringBuilder();
  113.         subj.append("отчет системы Vistar ");
  114.         SubjectEntity par = JGpsrepApp.reportControl.getParameterForSubject(doneReportId);
  115.  
  116.         if(par!=null){
  117.             subj.append("для маршрута ");
  118.             subj.append(par.routeId);
  119.             subj.append(" за ");
  120.  
  121.             String dateFormat = "dd-MM-yyyy";
  122.             SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
  123.             String dateStr = sdf.format(par.date);
  124.             subj.append(dateStr);
  125.         }
  126.         return subj.toString();
  127.     }
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement