SpringFramework рд╕реЗ JavaMailSender рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд▓рдЧреНрдирдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдИрдореЗрд▓ рднреЗрдЬреЗрдВ

рдпрд╣ рд╕реНрдкреНрд░рд┐рдВрдЧрдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ "рдХреИрд╕реЗ" рд▓реЗрдЦ рд╣реИред рдореИрдВ рдпреБрдЧрд▓ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░реВрдВрдЧрд╛ рдФрд░ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред

рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдПрдХ рдЖрд╕рд╛рди рдХрд╛рдо рд╣реИ:

public void send(String subject, String from, String to, File file) throws MessagingException { MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setSubject(subject); helper.setFrom(from); helper.setTo(to); helper.setReplyTo(from); helper.setText("stub", false); helper.addAttachment("document.txt", file); javaMailSender.send(message); } 

рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рд╣реИ рдЬрдм рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реАрдзреЗ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрдм рд╣рдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕реНрдореГрддрд┐ рдореЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреЗ рдИрдореЗрд▓ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

MimeMessageHelper рд╡рд░реНрдЧ рдореЗрдВ рдХреБрдЫ рддрд░реАрдХреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 public class MimeMessageHelper { ... public void addAttachment(String attachmentFilename, InputStreamSource inputStreamSource) { ... } public void addAttachment(String attachmentFilename, DataSource dataSource) throws MessagingException { ... } } 

рдЖрдЗрдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред

1. рдЕрдиреБрд▓рдЧреНрдирдХ рдПрдХ InputStreamSource рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ

рдпрд╣ рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдПрдХ IllegalArgumentException рдорд┐рд▓ рд╕рдХрддреА рд╣реИ:

" рдЙрддреНрддреАрд░реНрдг рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рдПрдХ рдЦреБрд▓реА рд╕реНрдЯреНрд░реАрдо рд╣реЛрддреА рд╣реИ: рдЕрдорд╛рдиреНрдп рддрд░реНрдХред JavaMail рдХреЛ рдПрдХ рдЗрдирдкреБрдЯрд╕реНрдЯреНрд░реАрдо рд╕реНрд░реЛрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рдЬрд╝рд╛ рд╕реВрдЪреА рдмрдирд╛рддрд╛ рд╣реИред "

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ MimeMessageHelper # addAttachment () рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЬрд╛рдВрдЪ рд╣реИ:

 if (inputStreamSource instanceof Resource && ((Resource) inputStreamSource).isOpen()) { throw new IllegalArgumentException( "Passed-in Resource contains an open stream: invalid argument. " + "JavaMail requires an InputStreamSource that creates a fresh stream for every call."); } 

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди InputStreamResource рд╣рдореЗрд╢рд╛ рд╡рд┐рдзрд┐ isOpen рд╕реЗ рд╕рд╣реА рд▓реМрдЯрд╛рддрд╛ рд╣реИ () рдЬреЛ рдЕрдиреБрд▓рдЧреНрдирдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ:

  public class InputStreamResource extends AbstractResource { //... @Override public boolean isOpen() { return true; } //... } 

рдХрд╛рдо рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

 public void send() { try { final ByteArrayOutputStream stream = createInMemoryDocument("test document text"); final InputStreamSource attachment = new ByteArrayResource(stream.toByteArray()); sendMimeMessageWithAttachments( "subject", "random@random.com", "random@random.com", attachment); } catch (IOException | MailException | MessagingException e) { logger.warn(e.getMessage(), e); } } private void sendMimeMessageWithAttachments(String subject, String from, String to, InputStreamSource source) throws MessagingException { MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setSubject(subject); helper.setFrom(from); helper.setTo(to); helper.setReplyTo(from); helper.setText("stub", false); helper.addAttachment("document.txt", source); javaMailSender.send(message); } private ByteArrayOutputStream createInMemoryDocument(String documentBody) throws IOException { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); outputStream.write(documentBody.getBytes()); return outputStream; } 

2. рдЕрдЯреИрдЪрдореЗрдВрдЯ рдПрдХ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдиреБрдХрд╕рд╛рди рдФрд░ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВ:

 public void send() { try { final ByteArrayOutputStream document = createInMemoryDocument("test document text"); final InputStream inputStream = new ByteArrayInputStream(document.toByteArray()); final DataSource attachment = new ByteArrayDataSource(inputStream, "application/octet-stream"); sendMimeMessageWithAttachments( "subject", "anonymous@xyz-mail.com", "anonymous@xyz-mail.com", attachment); } catch (IOException | MailException | MessagingException e) { logger.warn(e.getMessage(), e); } } private void sendMimeMessageWithAttachments(String subject, String from, String to, DataSource dataSource) throws MessagingException { MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setSubject(subject); helper.setFrom(from); helper.setTo(to); helper.setReplyTo(from); helper.setText("stub", false); helper.addAttachment("document.txt", dataSource); javaMailSender.send(message); } 

рд╡рд╕рдВрдд рд╕рдВрджрд░реНрдн рдЕрдзреНрдпрд╛рдп рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

Source: https://habr.com/ru/post/hi439176/


All Articles