pom
<!-- 邮箱发送依赖-->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
properties
mail_user = *************@163.com
mail_password = *********LX
mail_host = smtp.163.com
mail_from = ************@163.com
MailAuthenticatorUtil
/**
* 发件人账号密码
*
* @author zhangdi
*/
public class MailAuthenticatorUtil extends Authenticator {
public static String USERNAME = "";
public static String PASSWORD = "";
private static final PropertiesUtil MAIL = new PropertiesUtil("/configs/mail.properties");
private static final String MAIL_USER;
private static final String MAIL_PASSWORD;
private static final String MAIL_HOST;
private static final String MAIL_FROM;
static {
MAIL_USER = MAIL.getProperty("mail_user");//发件人邮箱
MAIL_PASSWORD = MAIL.getProperty("mail_password");//授权码(注意不是邮箱登录密码)
MAIL_HOST = MAIL.getProperty("mail_host");//smtp.163.com
MAIL_FROM = MAIL.getProperty("mail_from");//发件人
}
public MailAuthenticatorUtil() {
}
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(USERNAME, PASSWORD);
}
/**
* 发送邮件
*
* @param
* @param to 接收者邮箱
* @param subject 邮件主题
* @return success 发送成功 failure 发送失败
* @throws Exception
*/
public static String sendMailA(String imgname, String filename, String to, String subject, String yzm, Integer type) {
//邮箱内容
StringBuffer sb = new StringBuffer();
String s = emailTemplate(type, yzm);
if (s == null) {
return "failure";
}
sb.append(s);
if (to != null) {
Properties props = System.getProperties();
props.put("mail.smtp.host", MAIL_HOST);
props.put("mail.smtp.auth", "true");
MailAuthenticatorUtil auth = new MailAuthenticatorUtil();
MailAuthenticatorUtil.USERNAME = MAIL_USER;
MailAuthenticatorUtil.PASSWORD = MAIL_PASSWORD;
Session session = Session.getInstance(props, auth);
session.setDebug(true);
try {
MimeBodyPart text = new MimeBodyPart();
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(MAIL_FROM));
if (!to.trim().equals(""))
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to.trim()));
/**验证码*/
message.setSubject(subject);
Multipart mp = new MimeMultipart(); // 整个邮件:正文+附件
text.setContent(sb.toString(), "text/html;charset=gb2312");
mp.addBodyPart(text);
/**图片 **/
// 设置要发送图片的文件路径
String str = "D:/1.jpg,D:/1.jpg";
Arrays.stream(str.split(",")).forEach(obj->{
MimeBodyPart mailImgs = new MimeBodyPart();
FileDataSource img = new FileDataSource(obj);
try {
mailImgs.setDataHandler(new DataHandler(img));
mailImgs.setFileName(MimeUtility.encodeText(img.getName()));
mp.addBodyPart(mailImgs);
} catch (MessagingException | UnsupportedEncodingException e) {
e.printStackTrace();
}
});
/**附件 **/
// 设置要发送附件的文件路径
String strfile = "D:/新建 DOCX 文档.docx,D:/新建 DOCX 文档.docx";
Arrays.stream(strfile.split(",")).forEach(file->{
MimeBodyPart files = new MimeBodyPart();
FileDataSource fds = new FileDataSource(file);
try {
files.setDataHandler(new DataHandler(fds));
files.setFileName(MimeUtility.encodeText(fds.getName()));
mp.addBodyPart(files);
} catch (MessagingException | UnsupportedEncodingException e) {
e.printStackTrace();
}
});
message.setContent(mp);
message.setSentDate(new Date());
message.saveChanges();
Transport trans = session.getTransport("smtp");
System.out.println(trans);
Transport.send(message);
System.out.println(message.toString());
} catch (Exception e) {
e.printStackTrace();
return "failure";
}
return "success";
} else {
return "failure";
}
}
/**
* 模板
* @param type
* @param yzm
* @return
*/
private static final String emailTemplate(Integer type, String yzm) {
switch (type) {
case 1:
return "<!DOCTYPE>" + "<div bgcolor='#f1fcfa' style='border:1px solid #d9f4ee; font-size:14px; line-height:22px; color:#005aa0;padding-left:1px;padding-top:5px; padding-bottom:5px;'><span style='font-weight:bold;'>温馨提示:</span>"
+ "<div style='width:950px;font-family:arial;'>欢迎使用**活动,您的注册码为:<br/><h2 style='color:green'>" + yzm + "</h2><br/>本邮件由系统自动发出,请勿回复。<br/>感谢您的使用。<br/>武汉****股份有限公司</div>"
+ "</div>";
default:
}
return null;
}
}
service
/**
*
* @param imgs 图片路径
* @param filename 附件路径
* @param to 收件人邮箱
* @param subject 主题信息
* @param type 模板类型
* @return
*/
public static String sendMailA(String imgs,String filename, String to, String subject, Integer type) {
String yzm = RandomUtils.generateRandomString(6);
//自己的业务逻辑
String mailA = MailAuthenticatorUtil.sendMailA(imgs, filename, to, subject, yzm, type);
return mailA;
}
controller
@Api(value = "邮箱发送接口")
@RestController
@RequestMapping(value = "/email")
public class MailOperationController {
String to = "16**********@qq.com";// 收件人
String subject = "输入邮件主题";
@RequestMapping(value = "/mail", method = RequestMethod.GET)
public String IMGS(String imgs,String filename, Integer type) {
String res ="";
try {
res = MailOperationService.sendMailA(imgs,filename,to, subject, type);
System.out.println(res);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return res;
}
}