花个10分钟总结一下,虽然网上简称很多,自己记录一下动手实现的步骤:
引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
可以打开spring-boot-autoconfigure-2.5.0-sources.jar 下的spring.fatories 搜索Mail相关的配置,然后点开看里面有什么属性需要配置
然后在application.properties 里面打出spring.mail ,使用提示看下这些属性。然后配置。
#配置邮件参数
spring.mail.default-encoding=UTF-8
spring.mail.host=smtp.qq.com
#用户名 填真实的邮箱 9918118xx@qq.com
spring.mail.username=9918118xx@qq.com
#密码(开启开启SMTP/POP3时的授权码) sercrfeqknozxxxx
#ndwccgzjhbmtbxxx
spring.mail.password=sercrfeqknozbdjj
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.timeout=25000
#以谁来发送邮件
mail.fromMail.addr=xxxxx@foxmail.com
如何打开POP3/SMTP/IMAP功能?
https://service.mail.qq.com/cgi-bin/help?id=28&no=166&subtype=1
然后开发邮件服务类:
贴一下实现类,接口类忽略:
@Service
public class MailSeviceImpl implements MailSevice {
private static final Logger logger = LoggerFactory.getLogger(MailSeviceImpl.class);
@Autowired
JavaMailSender mailSender;
@Value("${mail.fromMail.addr}")
private String from;
@Override
public void sendMail(String[] to, String subject, String content) {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(from);
simpleMailMessage.setTo(to);
simpleMailMessage.setSubject(subject);
simpleMailMessage.setText(content);
try {
mailSender.send(simpleMailMessage);
logger.info("======>简单邮件已经发送!");
} catch (Exception e) {
// TODO: handle exception
logger.error("简单邮件发送失败!",e);
}
}
@Override
public void sendHtmlMail(String[] to, String subject, String content) {
MimeMessage mimeMessage = mailSender.createMimeMessage();
try {
//true表示需要创建一个multipart message
MimeMessageHelper hepler = new MimeMessageHelper(mimeMessage,true);
hepler.setFrom(from);
hepler.setTo(to);
hepler.setSubject(subject);
hepler.setText(content);
mailSender.send(mimeMessage);
logger.info("html邮件发送成功!");
} catch (MessagingException e) {
// TODO Auto-generated catch block
logger.error("发送html邮件时发生异常!",e);
}
}
//发送带附件的邮件
@Override
public void sendAttachmentsMail(String[] to, String subject, String content, String filePath) {
MimeMessage mimeMessage = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
helper.setFrom(from);
helper.setText(content);
helper.setSubject(subject);
helper.setTo(to);
FileSystemResource file = new FileSystemResource(new File(filePath));
//获取文件名称
String fileName = filePath.substring(filePath.lastIndexOf(File.separator)).replace("\\", "");
System.out.println("文件名称:"+fileName);
helper.addAttachment(fileName, file);
mailSender.send(mimeMessage);
logger.info("发送带附件的邮件成功!");
} catch (MessagingException e) {
// TODO Auto-generated catch block
logger.error("发送带附件的邮件时发生异常!",e);
}
}
@Override
public void sendInlineResourceMail(String[] to, String subject, String content, String rscPath, String rscId) {
MimeMessage mimeMessage = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
helper.setFrom(from);
helper.setText(content);
helper.setSubject(subject);
helper.setTo(to);
FileSystemResource file = new FileSystemResource(new File(rscPath));
helper.addInline(rscId, file);
mailSender.send(mimeMessage);
logger.info("发送带图片资源的邮件成功!");
} catch (MessagingException e) {
// TODO Auto-generated catch block
logger.error("发送带图片资源的邮件时遇到异常!",e);
}
}
}
测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
public class MailSeviceImplTest {
@Autowired
MailSevice mailService;
@Before
public void setUp() throws Exception {
System.out.println("启动测试。。。");
}
@Test
public void testSendMail() {
String[] to = {"9918118xx@qq.com","10145359xxx@qq.com"};
mailService.sendMail(to,"test simple mail", "这是一个测试邮件");
}
@Test
public void testSendHtmlMail() {
String[] to = {"9918118xx@qq.com","10145359xx@qq.com"};
String content ="<html>\n"
+ "<body>\n"
+ "<h2>这是一封Html邮件!!!</h2>\n"
+ "</body>\n"
+ "</html>";
mailService.sendMail(to,"test html mail", content);
}
@Test
public void testSendAttachmentsMail() {
String[] to = {"9918118xx@qq.com","10145359xx@qq.com"};
String filePath="H:\\Fangdichang\\MyprojectWorkSpace\\house.zip";
mailService.sendAttachmentsMail(to, "test acctachments mail", "这是一份带附件的邮件", filePath);
}
@Test
public void testsendInlineResourceMail() {
String[] to = {"991811xxx@qq.com","1014535xxx@qq.com"};
String rscPath="F:\\html\\999.jpg";
String rscId="007";
String content="<html><body>这是有图片的邮件:<img src=\'cid:" + rscId + "\'></body></html>";
mailService.sendInlineResourceMail(to, "带图片的邮件", content, rscPath, rscId);
}
就这么多吧,给自己做个记录。