美文网首页
发送带有附件的 E-mail

发送带有附件的 E-mail

作者: 奶盐味小圆饼 | 来源:发表于2020-08-13 17:35 被阅读0次

一: 使用JavaMailSender 发送邮件

private final JavaMailSender javaMailSender;

public BaseResponse sendEmail(@RequestBody EnquiryOrderExportRequest request) throws MessagingException, IOException, JRException {
        BaseUserEntity user = getCurrentUser();
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
        mimeMessageHelper.setFrom("xxxx@xxx.com");
        mimeMessageHelper.setTo(request.getTo());
        mimeMessageHelper.setSubject(request.getSubject());
        mimeMessageHelper.setText(request.getText());
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        enquiryOrderExportService.exportPdf(request.getId(), user, outputStream);
        InputStreamSource inputStreamSource = new ByteArrayResource(outputStream.toByteArray());
        mimeMessageHelper.addAttachment("询价单.pdf", inputStreamSource);
        javaMailSender.send(mimeMessage);

        enquiryOrderService.sendEmail(user, request.getId());

        return ResponseHelper.createSuccessResponse();
    }

配置application.yml文件

spring:
mail:
    host: smtp.mxhichina.com
    username: xxxx@xxx.com
    password: xxxx
    default-encoding: UTF-8
    test-connection: true
    properties:
      mail:
        smtp:
          auth: true
          socketFactory:
            class: javax.net.ssl.SSLSocketFactory
            port: 465
          starttls:
            enable: true
            required: true

二.自定义配置JavaMail

public void sendEmail(ExportRequest request) throws GeneralSecurityException, MessagingException, IOException, JRException {
        String to = request.getTo();
        String from = model.getEmail();
        String password = "xxxxxx";
        String host = model.getHost();

        Properties properties = System.getProperties();
        properties.setProperty("mail.smtp.host", host);
        properties.put("mail.smtp.auth", "true");
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        properties.put("mail.smtp.ssl.enable", "true");
        properties.put("mail.smtp.ssl.socketFactory", sf);

        Session session = Session.getDefaultInstance(properties, new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(from, password);
            }
        });

        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
        message.setSubject(request.getSubject());

        BodyPart messageBodyPart = new MimeBodyPart();
        messageBodyPart.setText(request.getText());
        Multipart multipart = new MimeMultipart();
        multipart.addBodyPart(messageBodyPart);
        messageBodyPart = new MimeBodyPart();

        String filename = "询价单.pdf";
        DataSource source = new FileDataSource(filename);
        exportPdf(request.getId(), user, source.getOutputStream());
        messageBodyPart.setDataHandler(new DataHandler(source));
        messageBodyPart.setFileName(filename);
        multipart.addBodyPart(messageBodyPart);

        message.setContent(multipart);
        Transport.send(message);
        logger.info("邮件发送成功");
    }

相关文章

网友评论

      本文标题:发送带有附件的 E-mail

      本文链接:https://www.haomeiwen.com/subject/nmcidktx.html