赞
踩
通过25端口发送邮件不安全,改为ssl加密方式发送邮件,比较常见的2中实现类发送邮件如下所示。
使用该实现类发送邮件,ssl加密使用端口号为465,借助Properties类设置ssl的各种配置。
SysUserEntity user = userService.getById(fromUserId); JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); Properties props = new Properties(); props.put("mail.smtp.auth", "true"); senderImpl.setHost(user.getEmailHost()); senderImpl.setUsername(user.getEmail()); senderImpl.setPassword(user.getEmailPw()); senderImpl.setDefaultEncoding("UTF-8"); senderImpl.setJavaMailProperties(props); Properties properties = new Properties(); //properties.setProperty("mail.debug", "true");//启用调试 //properties.setProperty("mail.smtp.timeout", "1000");//设置链接超时 //设置通过ssl协议使用465端口发送、使用默认端口(25)时下面三行不需要 properties.setProperty("mail.smtp.auth", "true");//开启认证 properties.setProperty("mail.smtp.socketFactory.port", "465");//设置ssl端口 properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); senderImpl.setJavaMailProperties(properties); MimeMessage message = senderImpl.createMimeMessage(); //true表示需要创建一个multipart message MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(user.getEmail()); helper.setTo(to.split(",")); helper.setSubject(subject); helper.setText(content + Constant.SIGNATURE_STR, true); senderImpl.send(message); log.info("邮件发送成功"); //保存发送日志 mailLogEntity.setCreateUserId(Constant.SUPER_ADMIN); mailLogEntity.setCreateUserOrgNo(Constant.SUPER_ADMIN_ORG); mailLogEntity.setSender(user.getEmail()); mailLogEntity.setType(Constant.USER_SEND); result = true;
网上资料较少,自己记录一下。
修改application.yml文件配置
spring:
mail:
host: xxx邮件系统服务器域名或Ip
port: 465
username: xxx账号
password: xxx
default-encoding: UTF-8
# 这里填发送邮箱对应的SMTP地址 ,忽略证书,信任域名
properties:
mail.smtp.ssl.trust: 邮件系统服务器域名或Ip
mail.smtp.auth: true
mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
mail.smtp.socketFactory.port: 465
mail.smtp.starttls.enable: true
mail.smtp.starttls.required: true
至于能否都采用第二种方式来实现,没做测试。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。