Spring Boot 使用465端口发送邮件
最近做的一个项目中有个邮件发送功能,发送邮件默认是25端口,但是公司用的服务器是阿里云的,会屏蔽25端口,所以部署到服务器后连接不上邮件服务器,需要使用SSL协议(使用465端口)。
需要注意的是Spring Boot 的版本问题,低版本只支持使用默认的25端口进行发送,或者使用SSL协议时的配置有所区别,我的Spring Boot 的版本信息最开始是1.3.0.RELEASE,在开发完成后测试的时候发现使用465端口死活连不上邮件服务器,只能通过25端口发送,对比了以前我做的项目,发现只有boot的版本不一样,于是我修改了一下版本信息,修改后如下所示:
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>1.4.7.RELEASE</version>
- </parent>
代码实现细节如下
一、添加maven依赖
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-mail</artifactId>
- </dependency>
二、添加配置信息
- #邮件配置
- spring.mail.host=邮件服务器地址
- spring.mail.username=用户名
- spring.mail.password=密码
- spring.mail.default-encoding=UTF-8
- #登录服务器是否需要认证
- spring.mail.properties.mail.smtp.auth=true
- #SSL证书Socket工厂
- spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
- #使用SMTPS协议465端口
- spring.mail.properties.mail.smtp.socketFactory.port=465
- #显示在收件人邮箱里面的发件人名称
- spring.mail.self.username=用户名
三、Java代码
- import java.io.File;
- import java.util.List;
- import javax.mail.MessagingException;
- import javax.mail.internet.InternetAddress;
- import javax.mail.internet.MimeMessage;
- import javax.mail.internet.MimeMessage.RecipientType;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.mail.javamail.JavaMailSender;
- import org.springframework.mail.javamail.MimeMessageHelper;
- import org.springframework.stereotype.Service;
- /**
- * @类名: MailSender<br>
- * @描述: 邮件发送<br>
- */
- @Service
- public class MailSendService {
- @Autowired
- JavaMailSender mailSender;
- //发件人名称设置
- @Value("${spring.mail.self.username}")
- private String sendUser;
- public void sendEmail(String toMail, String title, String content) throws MessagingException {
- final MimeMessage mimeMessage = mailSender.createMimeMessage();
- final MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
- message.setFrom(sendUser);
- message.setTo(toMail);
- message.setSubject(title);
- message.setText(content);
- mailSender.send(mimeMessage);
- }
- /**
- * @方法名: sendSimpleMail<br>
- * @描述: 发送普通文本格式的邮件<br>
- * @param toMail 收件人,多个用英文格式逗号分隔
- * @param replyTo 抄送人,多个用英文格式逗号分隔
- * @param title 邮件主题
- * @param content 邮件内容
- * @param flies 附件
- * @throws Exception
- */
- public void sendSimpleMail(String toMail, String replyTo, String title, String content, List<File> files) throws Exception {
- final MimeMessage mimeMessage = mailSender.createMimeMessage();
- final MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
- helper.setFrom(sendUser);
- helper.setSubject(title);
- helper.setText(content);
- //设置多个收件人
- String[] toAddress = toMail.split(",");
- helper.setTo(toAddress);
- //设置多个抄送
- if(StringUtils.isNotBlank(replyTo)) {
- //helper.setReplyTo(replyTo);
- InternetAddress[] internetAddressCC = InternetAddress.parse(replyTo);
- mimeMessage.setReplyTo(internetAddressCC);
- }
- //添加附件
- if(null != files) {
- for (File file : files) {
- helper.addAttachment(file.getName(), file);
- }
- }
- mailSender.send(mimeMessage);
- }
- /**
- * @方法名: sendHtmlMail<br>
- * @描述: 发送HTML格式的邮件<br>
- * @param toMail 收件人,多个用英文格式逗号分隔
- * @param replyTo 抄送人,多个用英文格式逗号分隔
- * @param title 邮件主题
- * @param htmlContent 邮件内容
- * @param files 附件
- * @throws Exception
- */
- public void sendHtmlMail(String toMail, String replyTo, String title, String htmlContent, List<File> files) throws Exception {
- final MimeMessage mimeMessage = mailSender.createMimeMessage();
- final MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
- helper.setFrom(sendUser);
- helper.setSubject(title);
- helper.setText(htmlContent, true);
- //设置多个收件人
- String[] toAddress = toMail.split(",");
- helper.setTo(toAddress);
- //设置多个抄送
- if(StringUtils.isNotBlank(replyTo)) {
- //helper.setReplyTo(replyTo);
- InternetAddress[] internetAddressCC = InternetAddress.parse(replyTo);
- mimeMessage.setRecipients(RecipientType.CC,internetAddressCC);
- }
- //添加附件
- if(null != files) {
- for (File file : files) {
- helper.addAttachment(file.getName(), file);
- }
- }
- mailSender.send(mimeMessage);
- }
- }原文链接: https://blog.csdn.net/LDY1016/article/details/78365072?utm_source=blogxgwz7
Spring Boot 使用465端口发送邮件的更多相关文章
- jumpservice使用465端口发送邮件
阿里云.华为云等云服务器默认屏蔽掉了25端口后,内网服务器如何通过跳板机发送邮件到外网邮箱. 如果是可联网的阿里云机器,可以直接配置mailx使用465端口发送邮件.需要进行ssl验证配置. Cent ...
- Spring Boot中使用JavaMailSender发送邮件
相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送.在Spring Boot的Starter模块中也为此提供了自动化配置.下面通过实例看看 ...
- 阿里云 Linux 启用465端口发送邮件
阿里云 Linux 启用465端口发送邮件 环境:阿里云 Linux Centos 7.4 x64 注:阿里云默认禁用25邮件端口,需要启动465端口加密进行邮件发送. 注:确保邮箱开启SMTP服务, ...
- centos上mailx通过465端口发送邮件
最近在看zabbix发送邮件的时候,发现自己的邮件总是无法发送,这里可能是外网防火墙禁止25端口,那么如何绕过25端口呢? 我使用的是163邮箱的TSL加密协议465端口 由于mailx基本配置很简 ...
- Spring Boot修改启动端口
spring boot是个好东西,可以不用容器直接在main方法中启动,而且无需配置文件,方便快速搭建环境.可是当我们要同时启动2个springboot工程时,就会有问题,有可能会因为8080端口被第 ...
- spring boot 不占用端口方式启动
随着微服务架构的流行,想要启动一个微服务架构项目就要开启好多端口,有时候一台机器上部署的项目多的时候,端口资源就比较紧张了,其实有的微服务组件仅仅只是提供RPC服务,可以不用占用web启动的端口,此时 ...
- spring boot 指定启动端口
spring boot 默认端口为8080 1.修改为指定端口 (1)修改配置文件 src/main/resources/application.properties server.port= (2) ...
- java 465端口发送邮件
package com.fr.function; import java.io.IOException; import java.security.Security; import java.util ...
- spring boot 修改Tomcat端口
package com.tsou.Controller; import org.springframework.boot.*; import org.springframework.boot.auto ...
随机推荐
- How to Pronounce the Numbers 1 – 10
How to Pronounce the Numbers 1 – 10 Share Tweet Share Tagged With: Numbers Numbers are something you ...
- python 深拷贝、浅拷贝、引用
(1)直接赋值,传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变(2)copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变(3)深拷贝,包含对象里面的子对象的拷贝,所以原始对象的 ...
- [Sphinx]全文索引Sphinx的使用配置
-------------------------------------------------------------------------------------- 搜索分为两种: 1. 对结 ...
- ORA-01704: 字符串文字太长 oracle
.net连接oracle时,当流从文件读出来更新数据库时,会报"ORA-01704: 字符串文字太长"这样的错误. 原因:sql语句拼接而成. 解决:采用参数方法传值. strin ...
- QuickSand图片点击后分裂成几份消失效果《IT蓝豹》
QuickSand图片点击后分裂成几份消失效果 QuickSand图片点击后分裂成几份消失效果,适合做图片退出和剪切效果.同时也可以学习android动画. demo中都封装好几个功能类,主要动画实现 ...
- 历届试题 买不到的数目-(dp)
问题描述 小明开了一家糖果店.他别出心裁:把水果糖包成4颗一包和7颗一包的两种.糖果不能拆包卖. 小朋友来买糖的时候,他就用这两种包装来组合.当然有些糖果数目是无法组合出来的,比如要买 10 颗糖. ...
- elasticsearch 问题
elasticsearch 的端口默认绑定到 127.0.0.1 上,对外开放 http 端口就配置 http.host,对外开放 tcp 端口就配置 network.host [1]: max fi ...
- File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
1.centos7 系统,自带python2.7 ,我安装了python3.5 并设置为系统默认python ,yum 语法不支持 2.解决办法: ls /usr/bin | grep python选 ...
- 1.3.7、CDH 搭建Hadoop在安装之前(端口---第三方组件使用的端口)
第三方组件使用的端口 在下表中,每个端口的“ 访问要求”列通常是“内部”或“外部”.在此上下文中,“内部”表示端口仅用于组件之间的通信; “外部”表示该端口可用于内部或外部通信. Component ...
- python进程之守护进程
标签(空格分隔): 守护进程 主进程创建子进程,然后将该进程设置成守护自己的进程,守护进程就好比崇祯皇帝身边的老太监,崇祯皇帝已死老太监就跟着殉葬了: 关于守护进程需要强调两点: 其一:守护进程会在主 ...