springboot mail 发送邮件
-
#QQ邮箱 mail: host: smtp.qq.com protocol: smtp default-encoding: utf-8 port: 587 username: 1234567891@qq.com #授权码 password: abcdefghijklmn test-connection: true properties: mail: smtp: auth: true starttls: enable: true required: true
-
//spring注入 @Autowired JavaMailSender javaMailSender; //而不是 //JavaMailSender javaMailSender = new JavaMailSenderImpl();
-
// 发件人(是自己) simpleMailMessage.setFrom("1234567891@163.com"); // 收件人 simpleMailMessage.setTo("9876543219@163.com"); // 邮件主题 simpleMailMessage.setSubject("测试"); // 邮件内容 simpleMailMessage.setText("测试测试"); javaMailSender.send(simpleMailMessage);
/**
* 发送附件 邮件发送
*
* 可以发送附件(文件,图片,音乐)和正文
* 给附件的URL即可
* 也可以换成本地filepath
* @param email 收件人邮箱
* @param urlPath 附件url
* @param title 主题
* @param text 内容正文
* @return
*/
@PostMapping("sendEmail")
public String enclosureEmail(String email, String urlPath, String title, String text) {
try {
Properties prop = new Properties();
prop.setProperty("mail.host","smtp.qq.com");
prop.setProperty("mail.transport.protocol","smtp");
prop.setProperty("mail.smtp.auth","true");
MyAuth myAuth = new MyAuth("1311111111@qq.com","abcdefghijk");
Session session = Session.getInstance(prop, myAuth);
//附件
MimeMessage message = new MimeMessage(session);
//发件人
message.setFrom("1311111111@qq.com");
//收件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress(email));
//title邮件标题
message.setSubject(title);
MimeBodyPart attach = new MimeBodyPart();
//根据url获取文件
URL url = new URL(urlPath);
DataSource dataSource = new URLDataSource(url);
DataHandler file = new DataHandler(dataSource);
attach.setDataHandler(file);
String name = file.getName();
String fileName = name.substring(name.lastIndexOf("/") + 1);
//设置附件文件名
attach.setFileName(fileName);
MimeMultipart multipart = new MimeMultipart();
multipart.addBodyPart(attach);
//正文
MimeBodyPart content = new MimeBodyPart();
//正文内容
content.setText(text);
multipart.addBodyPart(content);
multipart.setSubType("mixed");
message.setContent(multipart);
message.saveChanges();
//发送
Transport ts = session.getTransport();
ts.send(message);
ts.close();
return "200";
} catch (Exception e) {
e.printStackTrace();
return "500";
}
}
/**
/*设置用户名密码(授权码)
/*
**/
public class MyAuth extends Authenticator{
private String username;
private String password;
public MyAuth(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
}