发送邮箱
第一步需要去申请一个邮箱,我这里用了网易云邮箱
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/740419efc3c2908e505550629bbd7e44.png)
邮箱必须开启服务
添加配置
email:
host: smtp.163.com
port: 25
username: ***@163.com
password: ******
timeout: 25000
添加配置类
package com.hbyh.bam.test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.io.*;
import java.util.*;
@Component
@ConfigurationProperties(prefix="email")
public class MailConfig {
@Value("${host}")
public String host;
@Value("${port}")
public String port;
@Value("${email.username}")
public String userName;
@Value("${password}")
public String passWord;
@Value("${email.username}")
public String emailForm;
@Value("${timeout}")
public String timeout;
public String personal="***系统";
public String subject="标题";
public Properties properties = new Properties();
}
添加工具类
package com.hbyh.bam.test;
import java.io.*;
import java.util.*;
import javax.mail.internet.*;
import com.hbyh.bam.utils.SpringUtil;
import org.springframework.mail.javamail.*;
import org.springframework.web.multipart.MultipartFile;
public class MailUtil {
private MailConfig mc= SpringUtil.getBean(MailConfig.class);
private JavaMailSenderImpl mailSender = createMailSender();
private JavaMailSenderImpl createMailSender() {
JavaMailSenderImpl sender = new JavaMailSenderImpl();
sender.setHost(mc.host);
sender.setPort(Integer.parseInt(mc.port));
sender.setUsername(mc.userName);
sender.setPassword(mc.passWord);
sender.setDefaultEncoding("Utf-8");
Properties p = new Properties();
p.setProperty("mail.smtp.timeout", mc.timeout);
p.setProperty("mail.smtp.auth", "false");
sender.setJavaMailProperties(p);
return sender;
}
public int sendMail(String to, String html) {
int cg=0;
try{
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
messageHelper.setFrom(mc.emailForm, mc.personal);
messageHelper.setTo(to);
messageHelper.setSubject(mc.subject);
messageHelper.setText(html, true);
mailSender.send(mimeMessage);
cg=1;
}catch (Exception e){
cg=-1;
e.printStackTrace();
}
return cg;
}
public int sendMail(MultipartFile multipartFile, String to, String html) {
int cg=0;
try{
File file = MultiToFile(multipartFile);
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
messageHelper.setFrom(mc.emailForm, mc.personal);
messageHelper.setTo(to);
messageHelper.setSubject(mc.subject);
messageHelper.setText(html!=null?html:"", true);
if(file!=null){
String filename=file.getName();
messageHelper.addAttachment(filename, file);
}
mailSender.send(mimeMessage);
cg=1;
}catch (Exception e){
cg=-1;
e.printStackTrace();
}
return cg;
}
public File MultiToFile(MultipartFile multipartFile) {
if(multipartFile==null){
return null;
}
String filename=multipartFile.getOriginalFilename();
File file = new File(filename);
try {
InputStream ins=multipartFile.getInputStream();
OutputStream os = new FileOutputStream(file);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
ins.close();
} catch (Exception e){
file=null;
e.printStackTrace();
}
return file;
}
}
最后调用
package com.hbyh.bam.test;
import com.hbyh.bam.dto.RespBean;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@Api(tags = "测试")
@RestController
@RequestMapping("/test")
public class TestController {
@PostMapping("/email")
@ResponseBody
public RespBean show(@RequestParam("file")MultipartFile multipartFile){
int num=new MailUtil().sendMail(multipartFile,"miluhang@126.com",null);
if(num<=0){
return RespBean.goBack(1,"发送失败,请重试");
}else{
return RespBean.goBack(0,"已发送");
}
}
}
在此本人遇到535异常,此异常是因为读取username默认读取的本地名字,所以我在此加上email,535异常一般是因为账号密码写错