Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.art.func;
- import com.art.config.AppSecurityConfig;
- import com.art.model.Users;
- import com.art.model.supporting.GenericResponse;
- import com.art.model.supporting.SendingMail;
- import org.springframework.mail.javamail.JavaMailSenderImpl;
- import org.springframework.mail.javamail.MimeMessageHelper;
- import org.springframework.web.multipart.MultipartFile;
- import javax.mail.Authenticator;
- import javax.mail.MessagingException;
- import javax.mail.PasswordAuthentication;
- import javax.mail.Session;
- import javax.mail.internet.InternetAddress;
- import javax.mail.internet.MimeUtility;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.UnsupportedEncodingException;
- import java.nio.charset.StandardCharsets;
- import java.util.List;
- import java.util.Properties;
- @org.springframework.stereotype.Service
- public class PersonalMailService {
- private static final String ENCODING = StandardCharsets.UTF_8.name();
- public GenericResponse sendEmails(Users user, SendingMail sendingMail, String username, String pwd,
- String who, List<MultipartFile> file){
- GenericResponse response = new GenericResponse();
- JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
- String fileName = "mail.ru.properties";
- Properties prop = new Properties();
- InputStream input;
- try{
- input = AppSecurityConfig.class.getClassLoader().getResourceAsStream(fileName);
- prop.load(input);
- }catch (IOException ex){
- ex.printStackTrace();
- }
- //Using mail.ru
- mailSender.setHost(prop.getProperty("mail.host"));
- mailSender.setPort(Integer.parseInt(prop.getProperty("mail.port")));
- mailSender.setUsername(username);
- mailSender.setPassword(pwd);
- mailSender.setProtocol(prop.getProperty("mail.protocol"));
- Authenticator auth = new MyAuthenticator(mailSender.getUsername(), mailSender.getPassword());
- /* НОВОЕ */
- System.setProperty("mail.mime.encodefilename", "true");
- System.setProperty("mail.mime.encodeparameters", "false");
- /* НОВОЕ */
- Properties javaMailProperties = new Properties();
- javaMailProperties.put("mail.transport.protocol", prop.getProperty("mail.protocol"));
- javaMailProperties.put("mail.smtp.port", Integer.parseInt(prop.getProperty("mail.port")));
- javaMailProperties.put("mail.smtp.host", prop.getProperty("mail.host"));
- javaMailProperties.put("mail.smtp.auth", prop.getProperty("mail.smtp.auth"));
- javaMailProperties.put("mail.debug", prop.getProperty("mail.debug"));
- javaMailProperties.put("mail.smtp.starttls.enable", prop.getProperty("mail.smtp.starttls.enable"));
- javaMailProperties.put("mail.mime.charset", ENCODING);
- Session session = Session.getInstance(javaMailProperties, auth);
- mailSender.setJavaMailProperties(javaMailProperties);
- mailSender.setSession(session);
- mailSender.send(mimeMessage -> {
- MimeMessageHelper messageHelper = new MimeMessageHelper(
- mimeMessage, true, StandardCharsets.UTF_8.name());
- messageHelper.setTo(user.getEmail());
- messageHelper.setSubject(sendingMail.getSubject());
- messageHelper.setText(sendingMail.getBody());
- messageHelper.setFrom(new InternetAddress(username, who));
- file.forEach(f -> {
- String attachName = f.getOriginalFilename();
- if (!attachName.equals("")) {
- try{
- messageHelper.addAttachment(MimeUtility.encodeText(attachName, StandardCharsets
- .UTF_8.name(), "B"), f);
- response.setMessage("Письма успешно отправлены.");
- } catch (MessagingException e) {
- response.setError("При отправке писем что-то пошло не так.");
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- }
- });
- });
- return response;
- }
- class MyAuthenticator extends Authenticator {
- private String user;
- private String password;
- MyAuthenticator(String user, String password) {
- this.user = user;
- this.password = password;
- }
- public PasswordAuthentication getPasswordAuthentication() {
- String user = this.user;
- String password = this.password;
- return new PasswordAuthentication(user, password);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement