一: 使用JavaMailSender 發(fā)送郵件
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("郵件發(fā)送成功");
}