zelong.shao

task|发送进口预清关文件邮件

Showing 18 changed files with 555 additions and 31 deletions
......@@ -204,6 +204,22 @@
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-spring-boot</artifactId>
<version>2.17.1</version>
<exclusions>
<exclusion>
<artifactId>log4j-api</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
<exclusion>
<artifactId>log4j-core</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.10.6</version>
......
......@@ -61,7 +61,7 @@ public class Email implements Serializable {
/**
* 发送次数(0-3次)
*/
private Long sendNum;
private int sendNum;
/**
* 邮件发送时间
......@@ -190,11 +190,11 @@ public class Email implements Serializable {
this.statusName = statusName == null ? null : statusName.trim();
}
public Long getSendNum() {
public int getSendNum() {
return sendNum;
}
public void setSendNum(Long sendNum) {
public void setSendNum(int sendNum) {
this.sendNum = sendNum;
}
......
package com.fedex.connect.common.dependencies.enums.biz;
public enum EmailTypeEnum {
PENDING(0L,"pushConFile","推送预清关文件"),
PUSH_CON_FILE(0L,"pushConFile","推送预清关文件"),
;
......
......@@ -11,7 +11,7 @@ public class ClearanceEmailTemplate implements EmailTemplate {
*/
@Override
public String getTitle(Object ... arguments) {
return MessageFormat.format(CE_EMAIL_TITLE.TITLE,arguments);
return MessageFormat.format(CLEARANCE_TITLE.TITLE,arguments);
}
/**
......@@ -19,6 +19,14 @@ public class ClearanceEmailTemplate implements EmailTemplate {
*/
@Override
public String getBody(Object ... arguments) {
return CE_EMAIL_BODY.BODY;
return CLEARANCE_BODY.BODY;
}
interface CLEARANCE_TITLE{
String TITLE = "";
}
interface CLEARANCE_BODY{
String BODY = "";
}
}
......
package com.fedex.connect.task.data.bo;
import java.io.File;
public class MailAttachmentBo {
private File file;
private String fileName;
private String fileType;
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFileType() {
return fileType;
}
public void setFileType(String fileType) {
this.fileType = fileType;
}
public MailAttachmentBo() {
}
public MailAttachmentBo(File file, String fileName) {
this.file = file;
this.fileName = fileName;
}
public MailAttachmentBo(File file, String fileName, String fileType) {
this.file = file;
this.fileName = fileName;
this.fileType = fileType;
}
}
package com.fedex.connect.task.data.dto;
import com.fedex.connect.task.data.bo.MailAttachmentBo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 定义发送邮件内容对象
* @author Administrator
*/
@Data
public class MailConfigDto implements Serializable {
private static final long serialVersionUID = -8262893648898431866L;
private String host;
private String port;
private String auth;
/**
* 业务名称
*/
private String bizName;
/**
* 发件人
*/
private String from;
/**
* 发件人密码
*/
private String password;
/**
* 收件人
*/
private String to;
/**
* 抄送
*/
private String cc;
/**
* 邮件主题
*/
private String subject;
/**
* 邮件内容
*/
private String content;
private String senderAccount;
private String senderPassword;
private String receiveAccount;
private String ccAccount;
private List<Object> dataList;
private List<MailAttachmentBo> fileList;
/**
* 是否启用代理(uat,prod 在外网,需要使用代理)
*/
private String proxyStartFlag;
/**
* 代理服务器地址
*/
private String proxyHost;
/**
* 代理服务器端口
*/
private String proxyPort;
private String mailAccountFlag;
@Override
public String toString() {
return "MailMessageReq{" +
"host='" + host + '\'' +
", port='" + port + '\'' +
", auth='" + auth + '\'' +
", bizName='" + bizName + '\'' +
", from='" + from + '\'' +
", to='" + to + '\'' +
", cc='" + cc + '\'' +
", subject='" + subject + '\'' +
", content='" + content + '\'' +
", proxyStartFlag='" + proxyStartFlag + '\'' +
", proxyHost='" + proxyHost + '\'' +
", proxyPort='" + proxyPort + '\'' +
'}';
}
}
package com.fedex.connect.task.repository.base;
import com.fedex.connect.common.dao.biz.EmailMapper;
import com.fedex.connect.common.dao.log.EmailHistoryMapper;
import com.fedex.connect.common.dao.sys.KafkaStorageHistoryMapper;
import com.fedex.connect.common.dao.sys.KafkaTemporaryStorageMapper;
import com.fedex.connect.task.repository.dao.*;
......@@ -20,4 +22,8 @@ public class AbstractDaoRepository {
protected AttachmentExtMapper attachmentExtMapper;
@Autowired
protected PortclearEmailMappingExtMapper portclearEmailMappingExtMapper;
@Autowired
protected EmailMapper emailMapper;
@Autowired
protected EmailHistoryMapper emailHistoryMapper;
}
\ No newline at end of file
......
package com.fedex.connect.task.repository.dao;
import com.fedex.connect.common.model.biz.Email;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface EmailExtMapper {
List<Email> findConPushEmails(String typeCode,String statusCode);
@Delete("DELETE FROM T_BIZ_EMAIL WHERE ID = #{id}")
void deleteById(@Param("id") Long id);
}
......
......@@ -5,7 +5,7 @@ import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface IAttachmentExtRepository {
public interface IAttachmentRepository {
List<PushZipEmailDto> findAttachmentDetailsByBizId(@Param("bizId") Long bizId);
}
......
......@@ -4,6 +4,10 @@ import com.fedex.connect.common.model.biz.Email;
import java.util.List;
public interface IEmailExtRepository {
public interface IEmailRepository {
List<Email> findConPushEmails(String typeCode,String statusCode);
void deleteById(Long id);
void save(Email entity);
}
......
......@@ -2,13 +2,13 @@ package com.fedex.connect.task.repository.repo.biz.impl;
import com.fedex.connect.task.data.dto.PushZipEmailDto;
import com.fedex.connect.task.repository.base.AbstractDaoRepository;
import com.fedex.connect.task.repository.repo.biz.IAttachmentExtRepository;
import com.fedex.connect.task.repository.repo.biz.IAttachmentRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class AttachmentExtRepositoryImpl extends AbstractDaoRepository implements IAttachmentExtRepository {
public class AttachmentRepositoryImpl extends AbstractDaoRepository implements IAttachmentRepository {
@Override
public List<PushZipEmailDto> findAttachmentDetailsByBizId(Long bizId) {
......
......@@ -2,15 +2,30 @@ package com.fedex.connect.task.repository.repo.biz.impl;
import com.fedex.connect.common.model.biz.Email;
import com.fedex.connect.task.repository.base.AbstractDaoRepository;
import com.fedex.connect.task.repository.repo.biz.IEmailExtRepository;
import com.fedex.connect.task.repository.repo.biz.IEmailRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class EmailExtRepositoryImpl extends AbstractDaoRepository implements IEmailExtRepository {
public class EmailRepositoryImpl extends AbstractDaoRepository implements IEmailRepository {
public List<Email> findConPushEmails(String typeCode,String statusCode){
return emailExtMapper.findConPushEmails(typeCode,statusCode);
}
@Override
public void deleteById(Long id) {
emailExtMapper.deleteById(id);
}
public void save(Email entity){
if(entity != null) {
if (entity.getId() == null || entity.getId() <= 0) {
emailMapper.insertSelective(entity);
} else if (entity.getId() != null && entity.getId() > 0){
emailMapper.updateByPrimaryKeySelective(entity);
}
}
}
}
......
package com.fedex.connect.task.repository.repo.log;
import com.fedex.connect.common.model.log.EmailHistory;
public interface IEmailHistoryRepository {
void save(EmailHistory entity);
}
package com.fedex.connect.task.repository.repo.log.impl;
import com.fedex.connect.common.model.log.EmailHistory;
import com.fedex.connect.task.repository.base.AbstractDaoRepository;
import com.fedex.connect.task.repository.repo.log.IEmailHistoryRepository;
import org.springframework.stereotype.Repository;
@Repository
public class EmailHistoryRepositoryImpl extends AbstractDaoRepository implements IEmailHistoryRepository {
@Override
public void save(EmailHistory entity) {
if(entity != null) {
if (entity.getId() == null || entity.getId() <= 0) {
emailHistoryMapper.insertSelective(entity);
} else if (entity.getId() != null && entity.getId() > 0){
emailHistoryMapper.updateByPrimaryKeySelective(entity);
}
}
}
}
package com.fedex.connect.task.service.base;
import com.fedex.connect.common.dependencies.repository.repo.sys.IRedisSlabRepository;
import com.fedex.connect.task.repository.repo.biz.IAttachmentExtRepository;
import com.fedex.connect.task.repository.repo.biz.IEmailExtRepository;
import com.fedex.connect.task.repository.repo.biz.IAttachmentRepository;
import com.fedex.connect.task.repository.repo.biz.IEmailRepository;
import com.fedex.connect.task.repository.repo.sys.IKafkaStorageHistoryRepository;
import com.fedex.connect.task.repository.repo.sys.IKafkaTemporaryStorageRepository;
import com.fedex.connect.task.repository.repo.sys.IRedisSlabExtRepository;
......@@ -23,7 +23,7 @@ public class BaseService {
@Autowired
protected IRedisSlabExtRepository redisRepository;
@Autowired
protected IEmailExtRepository iEmailExtRepository;
protected IEmailRepository iEmailExtRepository;
@Autowired
protected IAttachmentExtRepository attachmentExtRepository;
protected IAttachmentRepository attachmentExtRepository;
}
\ No newline at end of file
......
......@@ -3,13 +3,16 @@ package com.fedex.connect.task.service.biz.impl;
import com.fedex.connect.common.dependencies.cache.CacheSystem;
import com.fedex.connect.common.dependencies.enums.biz.EmailStatusEnum;
import com.fedex.connect.common.dependencies.enums.biz.EmailTypeEnum;
import com.fedex.connect.common.dependencies.util.NIOFileUtils;
import com.fedex.connect.common.dependencies.util.ZipUtils;
import com.fedex.connect.common.model.biz.Email;
import com.fedex.connect.task.data.dto.MailConfigDto;
import com.fedex.connect.task.data.dto.PortFileDto;
import com.fedex.connect.task.data.dto.PushZipEmailDto;
import com.fedex.connect.task.service.base.BaseService;
import com.fedex.connect.task.service.biz.IPushConsignmentFileService;
import com.fedex.connect.task.utils.sys.ConFileEmailUtil;
import com.fedex.connect.task.utils.sys.EmailUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -34,6 +37,12 @@ public class PushConsignmentFileServiceImpl extends BaseService implements IPush
@Autowired
private ConFileEmailUtil conFileEmailUtil;
@Autowired
private EmailUtil emailUtil;
@Autowired
private NIOFileUtils nioFileUtils;
/**
* @Author Szl
* @Description 功能说明 推送清关文件
......@@ -46,17 +55,22 @@ public class PushConsignmentFileServiceImpl extends BaseService implements IPush
String tempPath = "";
String finalPath = "";
//查询需要发送的数据
List<Email> conPushEmails = iEmailExtRepository.findConPushEmails(cacheSystem.getDicEmailType(EmailTypeEnum.PENDING.getEnMsg()).getCode(),
List<Email> conPushEmails = iEmailExtRepository.findConPushEmails(cacheSystem.getDicEmailType(EmailTypeEnum.PUSH_CON_FILE.getEnMsg()).getCode(),
cacheSystem.getDicEmailStatus(EmailStatusEnum.PENDING.getEnMsg()).getCode());
for (Email conPushEmail : conPushEmails) {
//获取待发送的文件并打zip包
List<PushZipEmailDto> attachmentDetailsByBizId = attachmentExtRepository.findAttachmentDetailsByBizId(conPushEmail.getBizId());
PortFileDto portFileDto = new PortFileDto();
List<PushZipEmailDto> attachmentDetailsByBizId = attachmentExtRepository.findAttachmentDetailsByBizId(conPushEmail.getBizId());
portFileDto = conFileEmailUtil.getPortZipMap(portFileDto, attachmentDetailsByBizId, tempPath, finalPath, zipUtils);
//记录到发送邮件表中
//发送邮件
MailConfigDto mailMessageReqDto = new MailConfigDto();
boolean result = conFileEmailUtil.sendEmail(portFileDto, emailUtil,mailMessageReqDto);
//根据是否成功发送邮件对文件进行备份
String filePath = conFileEmailUtil.backFile(portFileDto.getZipPath(), nioFileUtils,result);
//更新邮件记录表
conFileEmailUtil.createEmail(cacheSystem,conPushEmail,mailMessageReqDto,result,filePath);
//保存入库
}
......
package com.fedex.connect.task.utils.sys;
import com.fedex.connect.common.dependencies.cache.CacheSystem;
import com.fedex.connect.common.dependencies.contants.BaseConstants;
import com.fedex.connect.common.dependencies.contants.BaseSeparatorConstants;
import com.fedex.connect.common.dependencies.enums.biz.AttachmentBizTypeEnum;
import com.fedex.connect.common.dependencies.enums.biz.EmailStatusEnum;
import com.fedex.connect.common.dependencies.template.clearanceEmail.ClearanceEmailTemplate;
import com.fedex.connect.common.dependencies.util.DateUtil;
import com.fedex.connect.common.dependencies.util.NIOFileUtils;
import com.fedex.connect.common.dependencies.util.ZipUtils;
import com.fedex.connect.common.model.bi.DictionaryEntries;
import com.fedex.connect.common.model.biz.Email;
import com.fedex.connect.common.model.log.EmailHistory;
import com.fedex.connect.task.data.bo.MailAttachmentBo;
import com.fedex.connect.task.data.dto.MailConfigDto;
import com.fedex.connect.task.data.dto.PortFileDto;
import com.fedex.connect.task.data.dto.PushZipEmailDto;
import com.fedex.connect.task.repository.repo.bi.IPortclearEmailMappingExtRepository;
import com.fedex.connect.task.repository.repo.biz.IEmailRepository;
import com.fedex.connect.task.repository.repo.log.IEmailHistoryRepository;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Paths;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
......@@ -33,9 +46,18 @@ public class ConFileEmailUtil {
@Autowired
private IPortclearEmailMappingExtRepository portclearEmailMappingExtRepository;
@Autowired
private IEmailRepository emailRepository;
@Autowired
private ClearanceEmailTemplate clearanceEmailTemplate;
@Autowired
private IEmailHistoryRepository emailHistoryRepository;
/**
* @Author Szl
* @Description 功能说明 根据口岸打包,每个口岸的文件打成一个zip包
* @Description 功能说明 根据运单打包,一票一个zip包
* @Date 2024/11/14
* @param tempPath
* @param finalPath
......@@ -55,7 +77,7 @@ public class ConFileEmailUtil {
filesList.add(file);
}
}
String date = DateUtil.formatTimeWithoutSlash(new Date());
String date = DateUtil.yyyyMMddHHmmss(new Date());
String fileName = date + BaseSeparatorConstants.SEPARATOR_UNDERLINE + portCode + BaseConstants.FILE_SUFFIX_KEYS.ZIP;
String fileNameTemp = date + BaseSeparatorConstants.SEPARATOR_UNDERLINE + portCode + BaseConstants.FILE_SUFFIX_KEYS.ZIP + BaseConstants.FILE_SUFFIX_KEYS.TEMP;
FileOutputStream fos = null;
......@@ -90,20 +112,183 @@ public class ConFileEmailUtil {
return portFileDto;
}
/**
* @Author Szl
* @Description 功能说明 发送邮件
* @Date 2024/11/18
* @param portFileDto
* @return void
*/
public boolean sendEmail(PortFileDto portFileDto,EmailUtil emailUtil,MailConfigDto mailMessageReqDto){
/**
* 获取邮件地址
*/
String emailAddress = this.getEmailAddress(portFileDto);
/**
* 构建发送邮件对象
*/
this.createMailMessageReqDto(emailAddress, portFileDto,mailMessageReqDto);
/**
* 发送邮件
*/
boolean result = emailUtil.sendMail(mailMessageReqDto);
return result;
}
/**
* @Author Szl
* @Description 功能说明 构建发送邮件dto
* @Date 2024/11/18
* @param emailAddress
* @param portFileDto
* @return com.fedex.connect.task.data.dto.MailMessageReqDto
*/
private MailConfigDto createMailMessageReqDto(String emailAddress, PortFileDto portFileDto,MailConfigDto mailConfigDto){
mailConfigDto.setHost("");
mailConfigDto.setPort("");
mailConfigDto.setAuth("");
//设置代理
mailConfigDto.setProxyStartFlag("");
mailConfigDto.setProxyHost("");
mailConfigDto.setProxyPort("");
//发件人
mailConfigDto.setFrom("");
//发件人密码
mailConfigDto.setPassword("");
//ce接收人
mailConfigDto.setTo(emailAddress);
//设置邮件标题
mailConfigDto.setSubject(clearanceEmailTemplate.getTitle());
//设置邮件内容
mailConfigDto.setContent(clearanceEmailTemplate.getBody());
//放入文件列表
List<MailAttachmentBo> srcFiles = new ArrayList<>();
File file = new File(portFileDto.getZipPath());
srcFiles.add(new MailAttachmentBo(file, ""));
mailConfigDto.setFileList(srcFiles);
return mailConfigDto;
}
public void saveEmail(Email conPushEmail,PortFileDto portFileDto){
//获取邮箱地址
/**
* @Author Szl
* @Description 功能说明 根据口岸获取邮件地址
* @Date 2024/11/18
* @param portFileDto
* @return java.lang.String
*/
private String getEmailAddress(PortFileDto portFileDto){
if (BaseConstants.CONSIGNMENT_TABLE_COLUMN_KEYS.DEST_IATA_CODE.equals(portFileDto.getDestIataCode())){
portFileDto.setDestIataCode(AttachmentBizTypeEnum.OTH.getEnMsg());
portFileDto.setDestIataCode("OTHER");
}
String emailByPortCode = portclearEmailMappingExtRepository.findEmailByPortCode(portFileDto.getDestIataCode());
if (StringUtils.isEmpty(emailByPortCode)){
emailByPortCode = portclearEmailMappingExtRepository.findEmailByPortCode("OTHER");
}
return emailByPortCode;
}
/**
* @Author Szl
* @Description 功能说明 创建邮件记录
* @Date 2024/11/18
* @param cacheSystem
* @param conPushEmail
* @param mailMessageReqDto
* @param result
* @return void
*/
public void createEmail(CacheSystem cacheSystem, Email conPushEmail, MailConfigDto mailMessageReqDto, boolean result,String filePath){
DictionaryEntries pending = cacheSystem.getDicEmailStatus(EmailStatusEnum.PENDING.getEnMsg());
DictionaryEntries success = cacheSystem.getDicEmailStatus(EmailStatusEnum.SUCCESS.getEnMsg());
DictionaryEntries failed = cacheSystem.getDicEmailStatus(EmailStatusEnum.FAILED.getEnMsg());
conPushEmail.setToAddress(mailMessageReqDto.getTo());
conPushEmail.setCcAddress(mailMessageReqDto.getCc());
conPushEmail.setSubject(mailMessageReqDto.getSubject());
conPushEmail.setBody(mailMessageReqDto.getContent());
conPushEmail.setSendTime(new Date());
conPushEmail.setFilePath(filePath);
//如果失败次数小于三则更新为待处理,继续处理
if (result){
conPushEmail.setTypeCode(success.getCode());
conPushEmail.setTypeName(success.getEnglishName());
}else {
if (conPushEmail.getSendNum()<3){
conPushEmail.setTypeCode(pending.getCode());
conPushEmail.setTypeName(pending.getEnglishName());
conPushEmail.setSendNum(conPushEmail.getSendNum()+1);
}else {
conPushEmail.setTypeCode(failed.getCode());
conPushEmail.setTypeName(failed.getEnglishName());
}
}
}
/**
* @Author Szl
* @Description 功能说明 备份文件
* @Date 2024/11/18
* @param filePath
* @param nioFileUtils
* @param result
* @return java.lang.String
*/
public String backFile(String filePath, NIOFileUtils nioFileUtils,boolean result){
File file = new File(filePath);
String targetDirPath = null;
try {
// 获取文件的扩展名
String extension = filePath.substring(filePath.lastIndexOf("."));
// 生成新的文件名
String fileName = String.format("%s%s%s%s",
"",
"",
new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()),
extension
);
String basePath = "";
// 构建目标文件路径
targetDirPath = String.join(File.separator,
basePath,
fileName
);
// 复制文件
nioFileUtils.copyFile(file, targetDirPath);
nioFileUtils.deleteTempFile(Paths.get(filePath));
} catch (Exception e) {
String errorMsg = String.format("文件复制失败:%s,portId:%s,fileName:%s", e.getMessage());
// 错误处理
log.error(errorMsg, e);
}
return targetDirPath;
}
/**
* @Author Szl
* @Description 功能说明 保存数据
* @Date 2024/11/18
* @param conPushEmail
* @param result
* @return void
*/
@Transactional
private void saveEmail(Email conPushEmail,boolean result){
EmailHistory emailHistory = new EmailHistory();
BeanUtils.copyProperties(conPushEmail, emailHistory);
if (result){
//成功后需要将业务表数据删除,保存至历史表
emailRepository.deleteById(conPushEmail.getId());
emailHistoryRepository.save(emailHistory);
}else {
//失败则根据是否第三次,如果是第三次失败则删除,保存到历史表
if (conPushEmail.getSendNum() == 3){
emailRepository.deleteById(conPushEmail.getId());
emailHistoryRepository.save(emailHistory);
}else {
emailRepository.save(conPushEmail);
}
}
conPushEmail.setToAddress(emailByPortCode);
conPushEmail.setSubject();
conPushEmail.setBody();
conPushEmail.setFilePath(portFileDto.getZipPath());
}
......
package com.fedex.connect.task.utils.sys;
import com.fedex.connect.task.data.bo.MailAttachmentBo;
import com.fedex.connect.task.data.dto.MailConfigDto;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Properties;
@Slf4j
@Component
public class EmailUtil {
public static boolean sendMail(MailConfigDto mailConfig) {
System.setProperty("mail.mime.splitlongparameters","false");
try {
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
senderImpl.setHost(mailConfig.getHost());
senderImpl.setPort(Integer.parseInt(Optional.ofNullable(mailConfig.getPort()).orElse("25")));
if ("true".equalsIgnoreCase(mailConfig.getMailAccountFlag())){
log.info("set user and pwd");
senderImpl.setUsername(mailConfig.getSenderAccount());
senderImpl.setPassword(mailConfig.getSenderPassword());
}
Properties prop = new Properties();
prop.put("mail.smtp.timeout", "60000");
senderImpl.setJavaMailProperties(prop);
MimeMessage mailMessage = senderImpl.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true, "UTF-8");
InternetAddress[] addressesTo = null;
String receiveAccount = mailConfig.getReceiveAccount();
if (!StringUtils.isBlank(receiveAccount)&& receiveAccount.trim().length() > 0) {
receiveAccount = receiveAccount.trim();
String[] receiveList = receiveAccount.split(",");
int receiveCount = receiveList.length;
if (receiveCount > 0) {
addressesTo = new InternetAddress[receiveCount];
for (int i = 0; i < receiveCount; i++) {
addressesTo[i] = new InternetAddress(receiveList[i]);
}
}
}
messageHelper.setTo(addressesTo);
// 4,抄送人
InternetAddress[] addressesCc = null;
String chaoSongCount = mailConfig.getCcAccount();
if (StringUtils.isNotBlank(chaoSongCount) && StringUtils.trimToEmpty(chaoSongCount).length() > 0) {
String[] copyList = chaoSongCount.split(",");
int copyCount = copyList.length;
if (copyCount > 0) {
addressesCc = new InternetAddress[copyCount];
for (int i = 0; i < copyCount; i++) {
addressesCc[i] = new InternetAddress(copyList[i]);
}
}
messageHelper.setCc(addressesCc);
}
messageHelper.setFrom(mailConfig.getSenderAccount(), mailConfig.getBizName());
messageHelper.setSubject(mailConfig.getSubject());
messageHelper.setText(mailConfig.getContent(), true);
List<MailAttachmentBo> fileList = mailConfig.getFileList();
if(Objects.nonNull(fileList)){
for (int i = 0, maxi = fileList.size(); i < maxi; i++) {
MailAttachmentBo bo = fileList.get(i);
if (bo != null){
messageHelper.addAttachment(bo.getFileName(), bo.getFile());
}
}
}
senderImpl.send(mailMessage);
return true;
} catch (Exception e) {
e.printStackTrace();
log.error("发送邮件失败...........",e);
}
return false;
}
}