【java】发送邮件
1、导包
<!-- 导入mail的依赖包 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
2、配置基础参数
#配置发送邮件的基本参数 spring.mail.host=smtp.qq.com
#你的邮箱地址 spring.mail.username=xxxx@qq.com
#你的邮箱授权码 spring.mail.password=xxxxxxxxx spring.mail.port=587 spring.mail.default-encoding=utf-8 spring.mail.protocol=smtp #开启加密验证 spring.mail.properties.mail.smtl.ssl.enable=true
3、编写发送代码
PS:在springboot 2.7.0版本中 JavaMailSenderImpl类 已经不在注册为Bean了,所以不能用@Autowired 注解 ,需要用@Resource注解
@Resource JavaMailSenderImpl mailSender; @Test void contextLoads() { SendSimpleMail(); //发送简单邮件 } private void SendSimpleMail(){ //JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); SimpleMailMessage message = new SimpleMailMessage(); message.setSubject("你好,这里是标题"); message.setText("这里是内容"); message.setTo("34@qq.com"); message.setFrom("22@qq.com"); mailSender.send(message); System.out.println("已执行发送方法"); }
4、复杂邮件发送代码
//region private void SendComplexMail(){ MimeMessage mimeMessage = mailSender.createMimeMessage(); try { //使用MimeMessageHelper 组装邮件相关信息 MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true); helper.setSubject("这是一封复杂邮件"); //添加html格式的邮件正文 (第二个参数表示 这是一段html代码) helper.setText("<p style='color:red'>你好啊,欢迎使用复杂邮件发送</p>",true); //添加附件 helper.addAttachment("1.jpg",new File("C:\\Users\\22079\\Desktop\\1.png")); //设置发送人 接收人 helper.setTo("344@qq.com"); helper.setFrom("22@qq.com"); } catch (MessagingException e) { e.printStackTrace(); } mailSender.send(mimeMessage); System.out.println("已执行发送方法"); } //endregion
5、常见问题:
springboot Got bad greeting from SMTP host: smtp.qq.com, port: 465, response: [EOF]
参考:https://blog.csdn.net/SixthMagnitude/article/details/114173570
解决方法:
如果使用端口为465,将protocol的smtp改为smtps
将配置文件端口改为587,则可以使用smtp。
均为SSL连接端口,因为qq不支持非SSL端口。
以下是配置文件,重点在于protocal(视端口而定)和开启SSL(必须)

浙公网安备 33010602011771号