1、引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2、为了账号授权码等等信息可以灵活运用,咱们选择JavaMailSenderImpl而不是选择用其父类JavaMailSender,附上代码
public ApiResult<Boolean> sendMail(MailBo mailBo) {
JavaMailSenderImpl javaMailSender = getJavaMailSender(mailBo);
SimpleMailMessage message = new SimpleMailMessage();
//邮件发送人
message.setFrom(mailBo.getFromUserName());
//邮件接收人
message.setTo(mailBo.getEmailAddress());
//邮件主题
message.setSubject(mailBo.getMailSubject());
//邮件内容
message.setText(mailBo.getContext());
if (StringUtils.isBlank(mailBo.getFilePath())) {
try {
javaMailSender.send(message);
} catch (Exception e) {
log.info("send mail failed");
return ApiResult.failed(e.getMessage());
}
return ApiResult.ok(true);
} else {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
try {
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
messageHelper.setFrom(mailBo.getFromUserName());
messageHelper.setTo(mailBo.getEmailAddress());
messageHelper.setSubject(mailBo.getMailSubject());
messageHelper.setText(mailBo.getContext(), true);
FileSystemResource file = new FileSystemResource(new File(mailBo.getFilePath()));
String fileName = new File(mailBo.getFilePath()).getName();
messageHelper.addAttachment(fileName, file);
javaMailSender.send(mimeMessage);
return ApiResult.ok(true);
} catch (MessagingException e) {
log.info("saveAndSendMailMessage failed: {}", e.getMessage());
return ApiResult.failed(e.getMessage());
}
}
}
/**
* 获取JavaMailSenderImpl
*
* @param mailBo
* @return
*/
private JavaMailSenderImpl getJavaMailSender(MailBo mailBo) {
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setUsername(mailBo.getUserName());
javaMailSender.setPassword(mailBo.getPassword());
Properties properties = new Properties();
properties.setProperty("mail.smtp.starttls.enable", mailBo.getStarttlsEnable());
properties.setProperty("mail.smtp.port", mailBo.getToPort());
properties.setProperty("mail.smtp.starttls.required", mailBo.getStarttlsRequired());
properties.setProperty("mail.smtp.ssl.enable", mailBo.getSslEnable());
javaMailSender.setJavaMailProperties(properties);
javaMailSender.setHost(mailBo.getHost());
//邮件编码
javaMailSender.setDefaultEncoding(mailBo.getEncoding());
return javaMailSender;
}
3、BO参数类
@Data
public class MailBo {
/**
* 邮箱接收地址
*/
@Email
private String emailAddress;
/**
* 校验码
*/
private String checkCode;
/**
* 邮件主题
*/
private String mailSubject;
/**
* 发送内容
*/
private String context;
/**
* 发送端邮箱地址
*/
private String userName;
/**
* 发送端邮箱密码
*/
private String password;
/**
* 接收端邮箱端口
*/
private String toPort;
/**
* 发送端邮箱域名
*/
private String host;
/**
* 发送端邮箱显示名
*/
private String fromUserName;
/**
* 附件地址
*/
private String filePath;
private String starttlsEnable="true";
private String starttlsRequired="true";
private String sslEnable="true";
private String encoding="utf-8";
}
4、代表示例
名称 | 类型 | 必须 | 示例值 | 描述 | 校验规则 |
---|---|---|---|---|---|
emailAddress | String | true | 1129380134@qq.com | 接收方邮箱地址 | notNull |
mailSubject | String | true | 主题 | 邮件主题 | length>0 |
context | String | true | 你好 | 邮件内容 | length>0 |
userName | String | true | gaiety@beyondsoft.com | 发送端邮件地址 | length>0 |
password | String | true | voucher20190917 | 授权码,不是邮箱密码 | length>=0 |
toPort | String | true | 465 | 端口号 | length>0 |
host | String | true | ismtp.beyondsoft.com | 邮箱服务器主机 | length>=0 |
fromUserName | String | true | gaiety@beyondsoft.com | 发件方的账户,和Username的值相同 | length>0 |
filePath | String | false | /opt/image/123.jpg | 附件路径 | length>0 |
starttlsEnable | String | false | true | TLS通讯协议开关,连接qq的SMTP服务器,需使用此通讯协议 | length>=0 |
starttlsRequired | String | false | true | length>=0 | |
sslEnable | String | false | true | length>=0 | |
encoding | String | false | utf-8 | 编码 | length>=0 |
5、请求示例
http://192.168.7.221:8852/supportSmsMessage/sms-mail
{
"emailAddress":"759676352@qq.com",
"mailSubject":"下面附上相关配置和代码111",
"context":"使用spring自带的JavaMailSenderImpl实现邮件发送",
"userName":"gaiety@beyondsoft.com",
"password":"voucher20190917",
"toPort":"465",
"host":"ismtp.beyondsoft.com",
"fromUserName":"gaiety@beyondsoft.com",
"starttlsEnable":"true",
"starttlsRequired":"true",
"sslEnable":"true",
"encoding":"utf-8",
"filePath":""
}