温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

springboot中JavaMailer使用ssl发送邮件

发布时间:2021-06-28 17:50:14 来源:亿速云 阅读:758 作者:chen 栏目:编程语言

本篇内容主要讲解“springboot中JavaMailer使用ssl发送邮件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springboot中JavaMailer使用ssl发送邮件”吧!

springboot使用发送邮件非常简单,都已经封装好了

首先就是引入依赖

<dependency>	<groupId>org.springframework.boot</groupId>	<artifactId>spring-boot-starter-mail</artifactId>	</dependency>

然后配置发送邮箱的用户名密码等,这里以使用腾讯企业邮箱为例,因为需要配置了ssl,所以需要配置额外属性properties,若不配置额外属性使用默认配置端口25也可以发送,但有些情况不行,比如阿里云的ecs内就不允许访问外网的25端口,因为被阿里云限制了。

spring:   mail:     host: smtp.exmail.qq.com     username: 10000@qq.com     password: 12345678     default-encoding: utf-8     properties:       '[mail.smtp.auth]': true       '[mail.smtp.timeout]': "5000"       '[mail.smtp.socketFactory.port]': "465"       '[mail.smtp.socketFactory.fallback]': false       '[mail.smtp.socketFactory.class]': "javax.net.ssl.SSLSocketFactory"

然后使用javamail发送邮件

@ConditionalOnProperty(prefix = "spring.mail", name = "host") @Service public class CommonMailSender {	@Value("${spring.mail.username}")	private String from;	@Autowired	private JavaMailSender mailSender;	/**      * 简单文本邮件      * @param to 接收者邮件      * @param subject 邮件主题      * @param contnet 邮件内容      */	@Async     public void sendSimpleMail(String to, String subject, String contnet){         SimpleMailMessage message = new SimpleMailMessage();         message.setTo(to);         message.setSubject(subject);         message.setText(contnet);         message.setFrom(from);	mailSender.send(message);     }          /**      * HTML 文本邮件      * @param to 接收者邮件      * @param subject 邮件主题      * @param contnet HTML内容      * @throws MessagingException      */	@Async     public void sendHtmlMail(List<String> to, String subject, String contnet) throws MessagingException {     	MimeMessage message = mailSender.createMimeMessage();          	MimeMessageHelper helper = new MimeMessageHelper(message, true);     	helper.setTo(to.toArray(new String[] {}));     	helper.setSubject(subject);     	helper.setText(contnet, true);     	helper.setFrom(from);          	mailSender.send(message);     }	/**      * HTML 文本邮件      * @param to 接收者邮件      * @param subject 邮件主题      * @param contnet HTML内容      * @throws MessagingException      */     @Async     public void sendHtmlMail(String to, String subject, String contnet) throws MessagingException {         MimeMessage message = mailSender.createMimeMessage();         MimeMessageHelper helper = new MimeMessageHelper(message, true);         helper.setTo(to);         helper.setSubject(subject);         helper.setText(contnet, true);         helper.setFrom(from);         mailSender.send(message);     }	/**      * 附件邮件      * @param to 接收者邮件      * @param subject 邮件主题      * @param contnet HTML内容      * @param filePath 附件路径      * @throws MessagingException      */     @Async     public void sendAttachmentsMail(String to, String subject, String contnet,                                     String filePath) throws MessagingException {         MimeMessage message = mailSender.createMimeMessage();         MimeMessageHelper helper = new MimeMessageHelper(message, true);         helper.setTo(to);         helper.setSubject(subject);         helper.setText(contnet, true);         helper.setFrom(from);         FileSystemResource file = new FileSystemResource(new File(filePath));         String fileName = file.getFilename();         helper.addAttachment(fileName, file);         mailSender.send(message);     } }

注意这里的发送邮件方法会阻塞进程,所以使用了异步注解@Async

默认异步方法每次调用都会启用一个新线程执行,非常耗资源,所以这里还需要配置一下异步的线程池

@Configuration @EnableAsync public class AsyncConfig extends AsyncConfigurerSupport {     @Override     public Executor getAsyncExecutor() {         ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();         executor.setCorePoolSize(7);         executor.setMaxPoolSize(42);         executor.setQueueCapacity(11);         executor.setThreadNamePrefix("AsyncExecutor-");         executor.initialize();         return executor;     }     @Override     public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {         return new SimpleAsyncUncaughtExceptionHandler();     } }

到此,相信大家对“springboot中JavaMailer使用ssl发送邮件”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI