首先是导包
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> <version>2.6.2</version> </dependency>
导报之后你就可以编写代码啦;以下是我的代码
po类
public class SendMailPO { /** * 邮件接收方 */ private String[] toMail; /** * 邮件主题 */ private String subject; /** * 邮件内容 */ private String content; /** * 为0时群发,为1时一个邮箱一封邮件 */ private Integer sendType = 0; }
/** * 简单的邮件发送 * @param po */ public void sendMailNotAccessory(SendMailPO po) { MimeMessage mail = mailSender.createMimeMessage(); try { //发送者 mail.setFrom(senderMail); //接收方 mail.addRecipients(Message.RecipientType.TO, po.getToMail()[0]); //标题 mail.setSubject(po.getSubject()); //内容 mail.setText(po.getContent()); mailSender.send(mail); } catch (MessagingException e) { e.printStackTrace(); } }
如果你想要发送带有样式的邮件,你可以这样
/**
* 带html的邮件
*
* @param po
*/
public String sendMailSheet(SendMailPO po) {
MimeMessage mailMessage = mailSender.createMimeMessage();
String text=po.getContent();
try {
//为true 可带html内容或附件
MimeMessageHelper mail = new MimeMessageHelper(mailMessage, true);
mail.setFrom(senderMail);
mail.setTo(po.getToMail());
if (file != null&&file.length>0) {
for (int i = 0; i <=file.length; i++) {
File multipartFileToFile = multipartFileToFile(file[i]);
FileSystemResource res = new FileSystemResource(multipartFileToFile);
if(text.contains("a"+i)){
break;
}
//添加内联资源,一个id对应一个资源,最终通过id来找到该资源
mail.addInline("p" + i, res);
}
}
// 抄送--抄送和密送可以不加 String[] mails= new String[]{xxx}; messageHelper.setCc(mails); // 密送 messageHelper.setBcc(xxx); mail.setSubject(po.getSubject()); mail.setText(text, true); mailSender.send(mailMessage); return "发送成功"; } catch (MessagingException e) { log.debug("邮件发送异常"); return "发送失败"; } }
以上是可以在邮件内添加图片等静态资源的
若你想要添加图片等附件只需要这样:
/**
* 带附件的邮件
*/
public void senMailFile(SendMailPO po, MultipartFile[] multipartFile) {
MimeMessage mailMessage = mailSender.createMimeMessage();
try {
MimeMessageHelper mail = new MimeMessageHelper(mailMessage, true);
mail.setFrom(senderMail);
mail.setTo(po.getToMail());
mail.setSubject(po.getSubject());
mail.setText(po.getContent());
for (int i = 0; i < multipartFile.length; i++) {
File file = multipartFileToFile(multipartFile[i]);
FileSystemResource res = new FileSystemResource(file);
//添加内联资源,一个文件名,对应一个附件
mail.addAttachment("附件" + i + ":" + res.getFilename(), res);
}
mailSender.send(mailMessage);
} catch (Exception e) {
e.printStackTrace();
}
}
还有一个转化文件类型的
/** * multipartfile转为file */ private File multipartFileToFile(MultipartFile multiFile) { // 获取文件名 String fileName = multiFile.getOriginalFilename(); // 获取文件后缀 assert fileName != null; String prefix = fileName.substring(fileName.lastIndexOf(".")); // 若需要防止生成的临时文件重复,可以在文件名后添加随机码 try { File file = File.createTempFile(fileName, prefix); multiFile.transferTo(file); return file; } catch (Exception e) { log.error(""); } return null; }
以上就是全部的了