Advertisement
Guest User

Untitled

a guest
Aug 4th, 2017
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.94 KB | None | 0 0
  1. package com.art.func;
  2.  
  3. import com.art.config.AppSecurityConfig;
  4. import com.art.model.Users;
  5. import com.art.model.supporting.GenericResponse;
  6. import com.art.model.supporting.SendingMail;
  7. import org.springframework.mail.javamail.JavaMailSenderImpl;
  8. import org.springframework.mail.javamail.MimeMessageHelper;
  9. import org.springframework.web.multipart.MultipartFile;
  10.  
  11. import javax.mail.Authenticator;
  12. import javax.mail.MessagingException;
  13. import javax.mail.PasswordAuthentication;
  14. import javax.mail.Session;
  15. import javax.mail.internet.InternetAddress;
  16. import javax.mail.internet.MimeUtility;
  17. import java.io.IOException;
  18. import java.io.InputStream;
  19. import java.io.UnsupportedEncodingException;
  20. import java.nio.charset.StandardCharsets;
  21. import java.util.List;
  22. import java.util.Properties;
  23.  
  24. @org.springframework.stereotype.Service
  25. public class PersonalMailService {
  26. private static final String ENCODING = StandardCharsets.UTF_8.name();
  27.  
  28. public GenericResponse sendEmails(Users user, SendingMail sendingMail, String username, String pwd,
  29. String who, List<MultipartFile> file){
  30. GenericResponse response = new GenericResponse();
  31. JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
  32.  
  33. String fileName = "mail.ru.properties";
  34. Properties prop = new Properties();
  35. InputStream input;
  36. try{
  37. input = AppSecurityConfig.class.getClassLoader().getResourceAsStream(fileName);
  38. prop.load(input);
  39. }catch (IOException ex){
  40. ex.printStackTrace();
  41. }
  42.  
  43. //Using mail.ru
  44. mailSender.setHost(prop.getProperty("mail.host"));
  45. mailSender.setPort(Integer.parseInt(prop.getProperty("mail.port")));
  46.  
  47. mailSender.setUsername(username);
  48. mailSender.setPassword(pwd);
  49. mailSender.setProtocol(prop.getProperty("mail.protocol"));
  50.  
  51. Authenticator auth = new MyAuthenticator(mailSender.getUsername(), mailSender.getPassword());
  52. /* НОВОЕ */
  53. System.setProperty("mail.mime.encodefilename", "true");
  54. System.setProperty("mail.mime.encodeparameters", "false");
  55. /* НОВОЕ */
  56. Properties javaMailProperties = new Properties();
  57. javaMailProperties.put("mail.transport.protocol", prop.getProperty("mail.protocol"));
  58. javaMailProperties.put("mail.smtp.port", Integer.parseInt(prop.getProperty("mail.port")));
  59. javaMailProperties.put("mail.smtp.host", prop.getProperty("mail.host"));
  60. javaMailProperties.put("mail.smtp.auth", prop.getProperty("mail.smtp.auth"));
  61. javaMailProperties.put("mail.debug", prop.getProperty("mail.debug"));
  62. javaMailProperties.put("mail.smtp.starttls.enable", prop.getProperty("mail.smtp.starttls.enable"));
  63. javaMailProperties.put("mail.mime.charset", ENCODING);
  64. Session session = Session.getInstance(javaMailProperties, auth);
  65.  
  66. mailSender.setJavaMailProperties(javaMailProperties);
  67. mailSender.setSession(session);
  68.  
  69. mailSender.send(mimeMessage -> {
  70. MimeMessageHelper messageHelper = new MimeMessageHelper(
  71. mimeMessage, true, StandardCharsets.UTF_8.name());
  72. messageHelper.setTo(user.getEmail());
  73. messageHelper.setSubject(sendingMail.getSubject());
  74. messageHelper.setText(sendingMail.getBody());
  75. messageHelper.setFrom(new InternetAddress(username, who));
  76. file.forEach(f -> {
  77. String attachName = f.getOriginalFilename();
  78. if (!attachName.equals("")) {
  79. try{
  80. messageHelper.addAttachment(MimeUtility.encodeText(attachName, StandardCharsets
  81. .UTF_8.name(), "B"), f);
  82. response.setMessage("Письма успешно отправлены.");
  83. } catch (MessagingException e) {
  84. response.setError("При отправке писем что-то пошло не так.");
  85. } catch (UnsupportedEncodingException e) {
  86. e.printStackTrace();
  87. }
  88.  
  89. }
  90. });
  91.  
  92. });
  93.  
  94. return response;
  95. }
  96.  
  97. class MyAuthenticator extends Authenticator {
  98. private String user;
  99. private String password;
  100.  
  101. MyAuthenticator(String user, String password) {
  102. this.user = user;
  103. this.password = password;
  104. }
  105.  
  106. public PasswordAuthentication getPasswordAuthentication() {
  107. String user = this.user;
  108. String password = this.password;
  109. return new PasswordAuthentication(user, password);
  110. }
  111.  
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement