Facebook
From Colossal Kangaroo, 4 Years ago, written in Java.
Embed
Download Paste or View Raw
Hits: 196
  1. package com.sygnalist.api;
  2.  
  3. import com.fasterxml.jackson.core.JsonProcessingException;
  4. import com.fasterxml.jackson.databind.ObjectMapper;
  5. import com.google.firebase.auth.FirebaseAuthException;
  6. import com.google.gson.JsonObject;
  7. import com.google.gson.JsonParser;
  8. import com.google.gson.stream.JsonReader;
  9. import com.sygnalist.api.models.*;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.context.annotation.Bean;
  12. import org.springframework.mail.SimpleMailMessage;
  13. import org.springframework.mail.javamail.JavaMailSender;
  14. import org.springframework.mail.javamail.JavaMailSenderImpl;
  15. import org.springframework.stereotype.Component;
  16. import org.springframework.stereotype.Controller;
  17. import org.springframework.web.bind.annotation.*;
  18.  
  19. import javax.mail.*;
  20. import javax.mail.internet.*;
  21. import java.io.IOException;
  22. import java.io.UnsupportedEncodingException;
  23. import java.nio.ByteBuffer;
  24. import java.nio.charset.StandardCharsets;
  25. import java.text.DateFormat;
  26. import java.text.SimpleDateFormat;
  27. import java.util.ArrayList;
  28. import java.util.Date;
  29. import java.util.List;
  30. import java.util.Properties;
  31. import java.util.concurrent.ExecutionException;
  32.  
  33. @RestController
  34. @RequestMapping(path = "/utils/", headers = {"content-type=application/json"})
  35. public class EmailController {
  36.  
  37.  
  38.     @GetMapping("/sendEmail")
  39.     public void sendEmail(String hash) throws MessagingException, IOException, ExecutionException, InterruptedException, FirebaseAuthException {
  40.  
  41.         EmailConstructor emailConstructor = new EmailConstructor();
  42.         Report report = ReportFetcher.FetchReport(hash);
  43.  
  44.  
  45.         Properties props = new Properties();
  46.         props.put("mail.smtp.auth", "true");
  47.         props.put("mail.smtp.starttls.enable", "true");
  48.         props.put("mail.smtp.host", "sygnalist.com");
  49.         props.put("mail.smtp.port", "587");
  50.  
  51.         Session session = Session.getInstance(props, new javax.mail.Authenticator() {
  52.             protected PasswordAuthentication getPasswordAuthentication() {
  53.                 return new PasswordAuthentication("[email protected]", "Dmu`Q@{UW&;vX{6Q");
  54.             }
  55.         });
  56.  
  57.         List<String> emails = report.getRecipientList();
  58.  
  59.  
  60.         for (String email : emails) {
  61.  
  62.             Message msg = new MimeMessage(session);
  63.             msg.setFrom(new InternetAddress("[email protected]", false));
  64.  
  65.  
  66.             msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(email));
  67.             msg.setSubject("Zgłoszenie z aplikacji sygnalista");
  68.             msg.setContent("Zgłoszenie z aplikacji sygnalista", "text/html; charset=UTF-8");
  69.             msg.setSentDate(new Date());
  70.  
  71.             MimeBodyPart messageBodyPart = new MimeBodyPart();
  72.             MimeUtility.encodeText(emailConstructor.CreateSygnalistaEmail(report, email), "UTF-8", "B");
  73.             messageBodyPart.setContent(emailConstructor.CreateSygnalistaEmail(report, email), "text/html; charset=UTF-8");
  74.             Multipart multipart = new MimeMultipart();
  75.             multipart.addBodyPart(messageBodyPart);
  76.             msg.setContent(multipart);
  77.             Transport.send(msg);
  78.         }
  79.  
  80.  
  81.     }
  82.  
  83.     @GetMapping("/report")
  84.     public void GetReport(String hash) throws ExecutionException, InterruptedException {
  85.  
  86.         ReportFetcher.FetchReport(hash);
  87.  
  88.     }
  89.  
  90.     @PostMapping("/sendEmailKids")
  91.     public void sendEmail(@RequestBody KidsReportEmail kidsReportEmail) {
  92.  
  93.         ObjectMapper objectMapper = new ObjectMapper();
  94.  
  95.         try {
  96.             String objStr = "";
  97.             objStr = objectMapper.writeValueAsString(kidsReportEmail);
  98.             System.out.println(objStr);
  99.         } catch (JsonProcessingException e) {
  100.             e.printStackTrace();
  101.         }
  102.  
  103.         try {
  104.             System.out.println(kidsReportEmail.toString());
  105.             sendmailkids(kidsReportEmail);
  106.         } catch (MessagingException e) {
  107.             e.printStackTrace();
  108.         } catch (IOException e) {
  109.             e.printStackTrace();
  110.         }
  111.     }
  112.  
  113.  
  114.     @PostMapping("/sendEmailPaparazzi")
  115.     public void sendEmailPaparazzi(@RequestBody PaparazziEmail paparazziEmail) {
  116.  
  117.         ObjectMapper objectMapper = new ObjectMapper();
  118.  
  119.         try {
  120.             String objStr = "";
  121.             objStr = objectMapper.writeValueAsString(paparazziEmail);
  122.             System.out.println(objStr);
  123.         } catch (JsonProcessingException e) {
  124.             e.printStackTrace();
  125.         }
  126.  
  127.         try {
  128.             System.out.println(paparazziEmail.toString());
  129.             sendMailPaparazzi(paparazziEmail);
  130.         } catch (MessagingException e) {
  131.             e.printStackTrace();
  132.         } catch (IOException e) {
  133.             e.printStackTrace();
  134.         }
  135.     }
  136.  
  137.  
  138.  
  139.  
  140.     private void sendmailkids(KidsReportEmail reportEmail) throws AddressException, MessagingException, IOException {
  141.         Properties props = new Properties();
  142.         props.put("mail.smtp.auth", "true");
  143.         props.put("mail.smtp.starttls.enable", "true");
  144.         props.put("mail.smtp.host", "malysygnalista.pl");
  145.         props.put("mail.smtp.port", "587");
  146.  
  147.         Session session = Session.getInstance(props, new javax.mail.Authenticator() {
  148.             protected PasswordAuthentication getPasswordAuthentication() {
  149.                 return new PasswordAuthentication("[email protected]", "MalySygnalistaZgloszenie123*()");
  150.             }
  151.         });
  152.  
  153.         Message msg = new MimeMessage(session);
  154.         msg.setFrom(new InternetAddress("[email protected]", false));
  155.  
  156.         //tutaj jest do kogo wysyłąne?
  157.         //ZMIANY 18.09.2019
  158.         InternetAddress[] emails = InternetAddress.parse(/*reportEmail.institution.email + "\n" + */(/*reportEmail.sendToMe ?*/ reportEmail.targetEmail/* : ""*/));
  159.         //GOTCH YA
  160.         msg.setRecipients(Message.RecipientType.TO, emails);
  161.         msg.setSubject("Zgłoszenie z aplikacji Mały Sygnalista");
  162.         msg.setContent("Zgłoszenie z aplikacji Mały Sygnalista", "text/html; charset=UTF-8");
  163.         msg.setSentDate(new Date());
  164.  
  165.         MimeBodyPart messageBodyPart = new MimeBodyPart();
  166.  
  167.  
  168.         MimeUtility.encodeText(createEmailContentForKids(reportEmail), "UTF-8", "B");
  169.         messageBodyPart.setContent(createEmailContentForKids(reportEmail), "text/html; charset=UTF-8");
  170.  
  171.         Multipart multipart = new MimeMultipart();
  172.         multipart.addBodyPart(messageBodyPart);
  173.  
  174.         //MimeBodyPart attachPart = new MimeBodyPart();
  175.  
  176.         //attachPart.attachFile("/var/tmp/image19.png");
  177.         //multipart.addBodyPart(attachPart);
  178.         msg.setContent(multipart);
  179.         Transport.send(msg);
  180.     }
  181.  
  182.     private void sendMailPaparazzi(PaparazziEmail paparazziEmail) throws AddressException, MessagingException, IOException {
  183.         Properties props = new Properties();
  184.         props.put("mail.smtp.auth", "true");
  185.         props.put("mail.smtp.starttls.enable", "true");
  186.         props.put("mail.smtp.host", "malysygnalista.pl");
  187.         props.put("mail.smtp.port", "587");
  188.  
  189.         Session session = Session.getInstance(props, new javax.mail.Authenticator() {
  190.             protected PasswordAuthentication getPasswordAuthentication() {
  191.                 return new PasswordAuthentication("[email protected]", "MalySygnalistaZgloszenie123*()");
  192.             }
  193.         });
  194.  
  195.         Message msg = new MimeMessage(session);
  196.         msg.setFrom(new InternetAddress("[email protected]", false));
  197.  
  198.  
  199.         InternetAddress[] emails = InternetAddress.parse(paparazziEmail.email);
  200.  
  201.         msg.setRecipients(Message.RecipientType.TO, emails);
  202.         msg.setSubject("Zgłoszenie z aplikacji Paparazzi");
  203.         msg.setContent("Zgłoszenie z aplikacji Paparazzi", "text/html; charset=UTF-8");
  204.         msg.setSentDate(new Date());
  205.  
  206.         MimeBodyPart messageBodyPart = new MimeBodyPart();
  207.  
  208.  
  209.         MimeUtility.encodeText(createEmailContentPaparazzi(paparazziEmail), "UTF-8", "B");
  210.         messageBodyPart.setContent(createEmailContentPaparazzi(paparazziEmail), "text/html; charset=UTF-8");
  211.  
  212.         Multipart multipart = new MimeMultipart();
  213.         multipart.addBodyPart(messageBodyPart);
  214.  
  215.         //MimeBodyPart attachPart = new MimeBodyPart();
  216.  
  217.         //attachPart.attachFile("/var/tmp/image19.png");
  218.         //multipart.addBodyPart(attachPart);
  219.         msg.setContent(multipart);
  220.         Transport.send(msg);
  221.     }
  222.  
  223.  
  224.     private String createEmailContent(ReportEmail reportEmail) {
  225.  
  226.         List<String> urls = reportEmail.urls;
  227.  
  228.         String attachments = "";
  229.  
  230.         System.out.println(reportEmail.urls.size());
  231.  
  232.         int number = 1;
  233.         for (String url : urls) {
  234.             attachments = attachments + "<a href=\"" + url + "\"> " + url + " </a><br>";
  235.             number++;
  236.         }
  237.  
  238.         System.out.println("attachments " + attachments);
  239.  
  240.         DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
  241.         Date date = new Date();
  242.  
  243.  
  244.         String email = "<html lang=\"en\" dir=\"ltr\">\n" +
  245.                 "  <head>\n" +
  246.                 "    <meta charset=\"utf-8\">\n" +
  247.                 "    <meta http-equiv=\"Content-Type\"  content=\"text/html charset=UTF-8\" />\n" +
  248.                 "    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">" +
  249.                 "    \n" +
  250.                 "  </head>\n" +
  251.                 "  <body>\n" +
  252.                 "      <style>\n" +
  253.                 "          @import url('https://fonts.googleapis.com/css?family=Titillium+Web');\n" +
  254.                 "      </style>\n" +
  255.                 "    <div style=\"background: #EAEAEA; height: 100%; font-family: 'Titillium Web';\">\n" +
  256.                 "      <div id=\"main\" style=\"padding-top: 70px; padding-bottom: 70px;\">\n" +
  257.                 "        <div style=\"height: 15px; margin: 0px 4vw 0px 4vw; background: #fff; border-radius: 10px 10px 0px 0px;\"> <div style=\"padding-top: 30px; padding-right: 50px;\"><i><span style=\"float: right;\">" + dateFormat.format(date) + ", Zgłoszenie nr " + reportEmail.reportNumber + "</span></i></div></div>\n" +
  258.                 "        <div style=\"background: #fff; margin: 0px  4vw 0px 4vw;  padding: 40px 0px 0px 0px; border-radius:0px 0px 10px 10px; \">\n" +
  259.                 "          \n" +
  260.                 "            <div style=\"padding: 20px 20px 20px 20px; margin: 25px 15px 20px 15px; background: #FAFAFA; border: solid 1px #EEEEEE;\">\n" +
  261.                 "              <span><b>Do:</b></span><span style=\"margin-left: 5px\"></span><br><br>\n" +
  262.                 "<span><b>" + reportEmail.institution.getName() + "</b></span><br>"
  263.  
  264.                 +
  265.                 ((reportEmail.email != null && !reportEmail.email.isEmpty())
  266.                         ?
  267.                         ("<span>" + reportEmail.institution.getAddress() + "</span><br><span>" + reportEmail.institution.getCity() + "</span><br>")
  268.                         :
  269.                         ("<span>" + reportEmail.institution.getEmail() + "</span><br>"))
  270.                 +
  271.  
  272.                 "            </div>\n" +
  273.                 "            <center><span style=\"padding: 4vw 4vw 0px 4vw; font-size: 150%; font-family: 'Titillium Web';\"><b>ZAWIADOMIENIE</b><span></span></span>" +
  274.                 "<br><span style=\"padding: 4vw 4vw 0px 4vw; font-size: 100%; font-family: 'Titillium Web';\">" + reportEmail.problem + "\n" +
  275.                 "</span></center>\n" +
  276.                 "            <div style=\"padding: 20px 20px 20px 20px; margin: 25px 15px 20px 15px; background: #FAFAFA; border: solid 1px #EEEEEE;\">\n" +
  277.                 (!reportEmail.description.isEmpty() ? "<span style=\"font-family: 'Titillium Web';\">Ja niżej podpisany zawiadamiam o treści:</span><br>\n" +
  278.                         "              <span style=\"font-family: 'Titillium Web';\"> " + reportEmail.description + "</span>\n" : "") +
  279. //              "              <br><span style=\"\"><b>Lokalizacja:</b></span><a href=\"" + "https://www.google.com/maps?q="+ reportEmail.lat +","+ reportEmail.lng +"\">" + "https://www.google.com/maps?q="+ reportEmail.lat +","+ reportEmail.lng + "</a><br><br>" +
  280.  
  281.                 "              <br><span style=\"\"><b>Lokalizacja:</b></span><a href=\"" + "https://www.google.com/maps/search/" + reportEmail.fetchedAddress + "/@" + reportEmail.lat + "," + reportEmail.lng + ",13.5z\">" + "https://www.google.com/maps/search/" + reportEmail.fetchedAddress + "/@" + reportEmail.lat + "," + reportEmail.lng + ",13.5z" + "</a><br><br>" +
  282.  
  283.                 "              <span style=\"\"><b>Załączniki:</b></span><br>\n" + attachments +
  284.                 "            </div>\n" +
  285.                 "            <div style=\"padding:20px 20px 20px 20px; margin: 25px 15px 20px 15px;\">\n" +
  286.                 "              <span><b>Dane osoby składającej zawiadomienie:</b></span><span style=\"margin-left: 5px\"></span><br>\n" +
  287.  
  288.                 ((reportEmail.firstName == null || reportEmail.anonymously) ? ("<span> Anonimowy mały sygnalista</span><br>") :
  289.                         ("              <span>" + reportEmail.firstName + " " + reportEmail.lastName + "</span><br>\n" +
  290.                                 "              <span>" + reportEmail.streetName + " " + reportEmail.flat + (!reportEmail.flatNumber.isEmpty() ? "/" + reportEmail.flatNumber : "") + " " + reportEmail.city + " " + reportEmail.postCode + "</span><br>\n" +
  291.                                 "              <span>Tel: " + reportEmail.phoneNumber + "</span><br>\n" +
  292.                                 "            </div>\n")) +
  293.  
  294.                 "        </div>\n" +
  295.                 "<div style=\"height:55px;padding: 20px 20px 20px 20px; margin: 25px 0px 0px 0px;background:linear-gradient(to left,#f45c43 0%,#eb3349 100%);border-radius:0px 0px 10px 10px\"><center><span style=\"font-family:'Titillium Web';color:white;font-size:80%;font-style:italic\">Zawiadomienie wysłane za pośrednictwem aplikacji mały sygnalista</span><br>\n" +
  296.                 "<img style=\"height: 20px; width: 90; margin-top:10px;\" src=\"https://firebasestorage.googleapis.com/v0/b/sg-app-fe55c.appspot.com/o/logo_white_v1.png?alt=media&amp;token=c5219959-3299-4df8-a483-950034c69fb4\">" +
  297.                 "</center></div>" +
  298.                 "    </div>\n" +
  299.                 "  </body>\n" +
  300.                 "</html>\n";
  301.  
  302.         String encodedBody = null;
  303.         try {
  304.             encodedBody = new String(email.getBytes("UTF-8"), "UTF-8");
  305.         } catch (UnsupportedEncodingException e) {
  306.             e.printStackTrace();
  307.         }
  308.         return encodedBody;
  309.  
  310.     }
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.     private String createEmailContentForKids(KidsReportEmail reportEmail) {
  318.  
  319.         List<String> urls = reportEmail.attachments;
  320.  
  321.         String attachments = "";
  322.  
  323.         System.out.println(reportEmail.attachments.size());
  324.  
  325.         int number = 1;
  326.         for (String url : urls) {
  327.             attachments = attachments + "<a href=\"" + url + "\"> " + url + " </a><br>";
  328.             number++;
  329.         }
  330.  
  331.         System.out.println("attachments " + attachments);
  332.  
  333.         DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
  334.         Date date = new Date();
  335.  
  336.  
  337.         String email = "<html lang=\"en\" dir=\"ltr\">\n" +
  338.                 "  <head>\n" +
  339.                 "    <meta charset=\"utf-8\">\n" +
  340.                 "    <meta http-equiv=\"Content-Type\"  content=\"text/html charset=UTF-8\" />\n" +
  341.                 "    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">" +
  342.                 "    \n" +
  343.                 "  </head>\n" +
  344.                 "  <body>\n" +
  345.                 "      <style>\n" +
  346.                 "          @import url('https://fonts.googleapis.com/css?family=Titillium+Web');\n" +
  347.                 "      </style>\n" +
  348.                 "    <div style=\"background: #EAEAEA; height: 100%; font-family: 'Titillium Web';\">\n" +
  349.                 "      <div id=\"main\" style=\"padding-top: 70px; padding-bottom: 70px;\">\n" +
  350.                 "        <div style=\"height: 15px; margin: 0px 4vw 0px 4vw; background: #fff; border-radius: 10px 10px 0px 0px;\"> <div style=\"padding-top: 30px; padding-right: 50px;\"><i><span style=\"float: right;\">" + dateFormat.format(date) + ", Zgłoszenie nr " + reportEmail.reportNumber + "</span></i></div></div>\n" +
  351.                 "        <div style=\"background: #fff; margin: 0px  4vw 0px 4vw;  padding: 40px 0px 0px 0px; border-radius:0px 0px 10px 10px; \">\n" +
  352.                 "          \n" +
  353.                 "            <div style=\"padding: 20px 20px 20px 20px; margin: 25px 15px 20px 15px; background: #FAFAFA; border: solid 1px #EEEEEE;\">\n" +
  354.                 "              <span><b>Do:</b></span><span style=\"margin-left: 5px\"></span><br><br>\n" +
  355.                 "<span><b>" + reportEmail.targetName + "</b></span><br>"
  356.  
  357.                 +
  358.                 ((reportEmail.kidEmail != null && !reportEmail.kidEmail.isEmpty())
  359.                         ?
  360.                         ("<span>" + reportEmail.targetAddress + "</span><br><span>" + reportEmail.targetCity + "</span><br>")
  361.                         :
  362.                         ("<span>" + reportEmail.targetEmail + "</span><br>"))
  363.                 +
  364.  
  365.                 "            </div>\n" +
  366.                 "            <center><span style=\"padding: 4vw 4vw 0px 4vw; font-size: 150%; font-family: 'Titillium Web';\"><b>ZAWIADOMIENIE</b><span></span></span>" +
  367.                 "</center>\n" +
  368.                 "            <div style=\"padding: 20px 20px 20px 20px; margin: 25px 15px 20px 15px; background: #FAFAFA; border: solid 1px #EEEEEE;\">\n" +
  369.                 (!reportEmail.description.isEmpty() ? "<span style=\"font-family: 'Titillium Web';\">Ja niżej podpisany zawiadamiam o:</span><br>\n" +
  370.                         "              <span style=\"font-family: 'Titillium Web';\"> " + reportEmail.description + "</span>\n" : "") +
  371. //              "              <br><span style=\"\"><b>Lokalizacja:</b></span><a href=\"" + "https://www.google.com/maps?q="+ reportEmail.lat +","+ reportEmail.lng +"\">" + "https://www.google.com/maps?q="+ reportEmail.lat +","+ reportEmail.lng + "</a><br><br>" +
  372.  
  373.                 "              <br><br><span style=\"\"><b>Lokalizacja:</b></span><a href=\"" + "https://www.google.com/maps/search/" + reportEmail.reportLocation + "/@" + reportEmail.reportLocationLat + "," + reportEmail.reportLocationLng + ",13.5z\">" + "https://www.google.com/maps/search/" + reportEmail.targetAddress + "/@" + reportEmail.reportLocationLat + "," + reportEmail.reportLocationLng + ",13.5z" + "</a><br><br>" +
  374.  
  375.                 "              <span style=\"\"><b>Załączniki:</b></span><br>\n" + attachments +
  376.                 "            </div>\n" +
  377.                 "            <div style=\"padding:20px 20px 20px 20px; margin: 25px 15px 20px 15px;\">\n" +
  378.                 "<span><b>Dane osoby składającej zawiadomienie:</b></span><span style=\"margin-left: 5px\"></span><br>\n" +
  379.                 ((reportEmail.anonymously) ? "Anonimowy sygnalista" : reportEmail.kidName) + "<br><br>" +
  380.                 "            <span><b>Dane opiekuna osoby składającej zawiadomienie:</b></span><span style=\"margin-left: 5px\"></span><br>\n" +
  381.  
  382.                 ((reportEmail.parentName == null || reportEmail.parentName == " " || reportEmail.parentName == "" || reportEmail.anonymously) ? ("<span>Dane ukryte</span><br>") :
  383.                         ("              <span>" + reportEmail.parentName + "</span><br>\n" +
  384.                                 "              <span>" + reportEmail.parentAddress + "\n" + reportEmail.parentCity + "</span><br>\n" +
  385.                                 "              <span>Tel: " + reportEmail.targetPhoneNumber + "</span><br>\n" +
  386.                                 "            </div>\n")) +
  387.  
  388.                 "        </div>\n" +
  389.                 "<div style=\"height:55px;padding: 20px 20px 20px 20px; margin: 25px 0px 0px 0px;background:linear-gradient(to left,#f45c43 0%,#eb3349 100%);border-radius:0px 0px 10px 10px\"><center><span style=\"font-family:'Titillium Web';color:white;font-size:80%;font-style:italic\">Zawiadomienie wysłane za pośrednictwem aplikacji sygnalista</span><br>\n" +
  390.                 "<img style=\"height: 20px; width: 90; margin-top:10px;\" src=\"https://firebasestorage.googleapis.com/v0/b/sygnalistakids-41d56.appspot.com/o/logo.png?alt=media&token=040fd1f2-dff2-4a7d-811f-a0c348ff2e0d\">" +
  391.                 "</center></div>" +
  392.                 "    </div>\n" +
  393.                 "  </body>\n" +
  394.                 "</html>\n";
  395.  
  396.         String encodedBody = null;
  397.         try {
  398.             encodedBody = new String(email.getBytes("UTF-8"), "UTF-8");
  399.         } catch (UnsupportedEncodingException e) {
  400.             e.printStackTrace();
  401.         }
  402.         return encodedBody;
  403.  
  404.     }
  405.  
  406.  
  407.     private String createEmailContentPaparazzi(PaparazziEmail paparazziEmail) {
  408.  
  409.         List<String> urls = paparazziEmail.attachments;
  410.  
  411.         String attachments = "";
  412.  
  413.         System.out.println(paparazziEmail.attachments.size());
  414.  
  415.         int number = 1;
  416.         for (String url : urls) {
  417.             attachments = attachments + "<a href=\"" + url + "\"> " + url + " </a><br>";
  418.             number++;
  419.         }
  420.  
  421.         System.out.println("attachments " + attachments);
  422.  
  423.         DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
  424.         Date date = new Date();
  425.  
  426.  
  427.         String email = "<html lang=\"en\" dir=\"ltr\">\n" +
  428.                 "  <head>\n" +
  429.                 "    <meta charset=\"utf-8\">\n" +
  430.                 "    <meta http-equiv=\"Content-Type\"  content=\"text/html charset=UTF-8\" />\n" +
  431.                 "    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">" +
  432.                 "    \n" +
  433.                 "  </head>\n" +
  434.                 "  <body>\n" +
  435.                 "      <style>\n" +
  436.                 "          @import url('https://fonts.googleapis.com/css?family=Titillium+Web');\n" +
  437.                 "      </style>\n" +
  438.                 "    <div style=\"background: #EAEAEA; height: 100%; font-family: 'Titillium Web';\">\n" +
  439.                 "      <div id=\"main\" style=\"padding-top: 70px; padding-bottom: 70px;\">\n" +
  440.                 "        <div style=\"height: 15px; margin: 0px 4vw 0px 4vw; background: #fff; border-radius: 10px 10px 0px 0px;\"> <div style=\"padding-top: 30px; padding-right: 50px;\"><i><span style=\"float: right;\">" + dateFormat.format(date) + ", Materiał nr " + paparazziEmail.reportNumber + "</span></i></div></div>\n" +
  441.                 "        <div style=\"background: #fff; margin: 0px  4vw 0px 4vw;  padding: 40px 0px 0px 0px; border-radius:0px 0px 10px 10px; \">\n" +
  442.                 "            <div style=\"padding: 20px 20px 20px 20px; margin: 25px 15px 20px 15px; background: #FAFAFA; border: solid 1px #EEEEEE;\">\n" +
  443.                 "              <span><b>Do:</b></span><span style=\"margin-left: 5px\"></span><br><br>\n" +
  444.                 "<span><b>" + paparazziEmail.name + "</b></span><br>"
  445.  
  446.                 +
  447.                 "<span>" + paparazziEmail.email + "</span><br><span>"
  448.                 +
  449.  
  450.                 "            </div>\n" +
  451.                 "            <div style=\"padding: 20px 20px 20px 20px; margin: 25px 15px 20px 15px; background: #FAFAFA; border: solid 1px #EEEEEE;\">\n" +
  452.                 (!paparazziEmail.description.isEmpty() ? "<span style=\"font-family: 'Titillium Web';\">Opis materiału:</span><br>\n" +
  453.                         "              <span style=\"font-family: 'Titillium Web';\"> " + paparazziEmail.description + "</span>\n" : "") +
  454. //              "              <br><span style=\"\"><b>Lokalizacja:</b></span><a href=\"" + "https://www.google.com/maps?q="+ reportEmail.lat +","+ reportEmail.lng +"\">" + "https://www.google.com/maps?q="+ reportEmail.lat +","+ reportEmail.lng + "</a><br><br>" +
  455.  
  456.                 "              <br><span style=\"\"><b>Lokalizacja:</b></span><a href=\"" + "https://www.google.com/maps/search/" + paparazziEmail.address + "/@" + paparazziEmail.reportLocationLat + "," + paparazziEmail.reportLocationLng + ",13.5z\">" + "https://www.google.com/maps/search/" + paparazziEmail.address + "/@" + paparazziEmail.reportLocationLat + "," + paparazziEmail.reportLocationLng + ",13.5z" + "</a><br><br>" +
  457.  
  458.                 "              <span style=\"\"><b>Załączniki:</b></span><br>\n" + attachments +
  459.                 "            </div>\n" +
  460.                 "            <div style=\"padding:20px 20px 20px 20px; margin: 25px 15px 20px 15px;\">\n" +
  461.                 "              <span><b>Dane osoby składającej materiał:</b></span><span style=\"margin-left: 5px\"></span><br>\n" +
  462.  
  463.                 ((paparazziEmail.firstName == null || paparazziEmail.anonymously) ? ("<span>Użytkownik anonimowy</span><br>") :
  464.                         ("              <span>" + paparazziEmail.firstName + " " + paparazziEmail.lastName + "</span><br>\n" +
  465.                                 "              <span>" + paparazziEmail.streetName + " " + paparazziEmail.homeNumber + (!paparazziEmail.flatNumber.isEmpty() ? "/" + paparazziEmail.flatNumber : "") + " " + paparazziEmail.city + " " + paparazziEmail.postCode + "</span><br>\n" +
  466.                                 "              <span>Tel: " + paparazziEmail.phoneNumber + "</span><br>\n" +
  467.                                 "<br><br><span>Numer konta: " + paparazziEmail.bankAccount + "</span><br><br>" +
  468.                                 (paparazziEmail.publishing ? "<span>Wyrażono zgodę na publikację materiału</span><br>" : "<span>Nie wyrażono zgody na publikację materiału</span><br>") +
  469.                                 "            </div>\n")) +
  470.                 "        </div>\n" +
  471.                 "<div style=\"height:55px;padding: 20px 20px 20px 20px; margin: 25px 0px 0px 0px;background:#000;border-radius:0px 0px 10px 10px\"><center><span style=\"font-family:'Titillium Web';color:white;font-size:80%;font-style:italic\">Materiał wysłany za pośrednictwem aplikacji Paparazzi</span><br>\n" +
  472.                 "<img style=\"height: 20px; width: 90; margin-top:10px;\" src=\"https://firebasestorage.googleapis.com/v0/b/paparazzi-e9d73.appspot.com/o/Path%2014.png?alt=media&token=45342157-dfbc-4238-9a23-83b68971ca11\">" +
  473.                 "</center></div>" +
  474.                 "    </div>\n" +
  475.                 "  </body>\n" +
  476.                 "</html>\n";
  477.  
  478.         String encodedBody = null;
  479.         try {
  480.             encodedBody = new String(email.getBytes("UTF-8"), "UTF-8");
  481.         } catch (UnsupportedEncodingException e) {
  482.             e.printStackTrace();
  483.         }
  484.         return encodedBody;
  485.  
  486.     }
  487.  
  488.  
  489.     private String determineReportType(int type) {
  490.         if (type == 2) {
  491.             return "Negatywne";
  492.         } else if (type == 1) {
  493.             return "Pozytywne";
  494.         }
  495.         return "";
  496.     }
  497. }
  498.  
  499.