javax.mail发送邮件功能
java发送邮件
package com.cinc.messageservice.message.mail.util;
import com.cinc.messageservice.message.mail.dto.MailDto;
import com.cinc.messageservice.utils.EmptyUtils;
import lombok.extern.slf4j.Slf4j;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Date;
import java.util.Properties;
/**
* @Author: hhr
* @Despriction: 邮件发送
* @CreatedTime: 2020/3/12 10:07
* @ModifyBy:
* @ModifyTime:
* @ModifyDespriction:
* @Version: V1.0.0
*/
@Slf4j
public class MailUtil {
public boolean sendMail(Boolean isSingle, MailDto mailDto) throws MessagingException {
//初始化
Session session = this.authenticationMail();
try {
//设置消息
MimeMessage message = getMimeMessage(isSingle, session, mailDto);
//发送
Transport transport = session.getTransport();
transport.connect(mailDto.getMailAccount(), mailDto.getMailLicense());
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}catch (MessagingException e){
e.printStackTrace();
return false;
}
return true;
}
/**
* 验证信息认证
* @return
* @throws MessagingException
*/
private Session authenticationMail() throws MessagingException {
Session session;
try {
Properties props = new Properties();
//设置用户的认证方式
props.setProperty("mail.smtp.auth", "true");
//设置传输协议
props.setProperty("mail.transport.protocol", "smtp");
//设置发件人的SMTP服务器地址
props.setProperty("mail.smtp.host", "smtp.exmail.qq.com");
props.put("mail.smtp.ssl.enable", "true"); //qq的ssl加密
session = Session.getInstance(props);
session.setDebug(true);
} catch (Exception e) {
e.printStackTrace();
throw new MessagingException("认证失败");
}
return session;
}
/**
* @param isSingle 是否单发
* <P>true-向指定的一个收件人发送邮件
* <P>false-向多个收件人群发邮件
* <P>群发时多个收件人之间用英文逗号','分割
* @param mailDto 邮件实体
*/
private MimeMessage getMimeMessage(Boolean isSingle, Session session, MailDto mailDto)
throws MessagingException {
if (EmptyUtils.isStringEmpty(mailDto.getMailTiTle())) {
throw new MessagingException("邮件标题不能为空");
}
if (EmptyUtils.isStringEmpty(mailDto.getMailContent())) {
throw new MessagingException("邮件内容不能为空");
}
MimeMessage message = new MimeMessage(session);
try {
//设置发件人地址
message.setFrom(new InternetAddress(mailDto.getMailAccount()));
} catch (MessagingException e) {
throw new MessagingException("发件人地址错误");
}
/*
设置收件人地址
MimeMessage.RecipientType.TO:发送
MimeMessage.RecipientType.CC:抄送
MimeMessage.RecipientType.BCC:密送
*/
if (isSingle) {
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(mailDto.getRecipients()));
} else {
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(mailDto.getRecipients()));
}
//设置抄送人
if (!EmptyUtils.isStringEmpty(mailDto.getCopyRecipients())){
message.setRecipients(MimeMessage.RecipientType.CC, InternetAddress.parse(mailDto.getCopyRecipients()));
}
//设置邮件标题
message.setSubject(mailDto.getMailTiTle(), "UTF-8");
//设置邮件内容
message.setContent(mailDto.getMailContent(), "text/html;charset=UTF-8");
//设置附件
if (!EmptyUtils.isStringEmpty(mailDto.getMailFilePath())){
try {
Multipart multipart = new MimeMultipart();
BodyPart part = new MimeBodyPart();
// 加入附件
FileDataSource ds = new FileDataSource(mailDto.getMailFilePath());
part.setDataHandler(new DataHandler(ds));
part.setFileName(MimeUtility.encodeText(ds.getName()));
multipart.addBodyPart(part);
// 设置邮件内容
message.setContent(multipart);
}catch (Exception e){
e.printStackTrace();
}
}
message.setSentDate(new Date());
return message;
}
}
package com.cinc.messageservice.message.mail.dto;
import lombok.Data;
/**
* @Author: hhr
* @Despriction: 邮件实体
* @CreatedTime: 2020/3/12 9:59
* @ModifyBy:
* @ModifyTime:
* @ModifyDespriction:
* @Version: V1.0.0
*/
@Data
public class MailDto {
/**
* 邮件标题
*/
private String mailTiTle;
/**
* 邮件内容
*/
private String mailContent;
/**
* 附件路径
*/
private String mailFilePath;
/**
* 收件人(们)-(多个人邮箱号逗号分隔)
*/
private String recipients;
/**
* 抄送人(们)-(多个人邮箱号逗号分隔)
*/
private String copyRecipients;
/**
* 发件人账号
*/
private String mailAccount;
/**
* 发件人授权码
*/
private String mailLicense;
/**
* 发件人是否启用
*/
private String isUse;
}

浙公网安备 33010602011771号