package org.springblade.modules.email.service.impl; import com.xxl.job.core.util.DateUtil; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springblade.core.tool.utils.StringUtil; import org.springblade.modules.email.config.MailProperties; import org.springblade.modules.email.config.MailSenderConfig; import org.springblade.modules.email.entity.EmailAccount; import org.springblade.modules.email.service.IEmailAccountService; import org.springblade.modules.messageRecord.entity.MessageUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import java.io.File; import java.util.List; import java.util.stream.Collectors; @Service @Slf4j public class EmailAccountServiceImpl implements IEmailAccountService { private static Logger logger = LoggerFactory.getLogger(EmailAccountServiceImpl.class); @Autowired MailSenderConfig senderConfig; @Autowired MailProperties mailProperties; @Override public Boolean senderEmail(EmailAccount account) { if (account.getEmails().size() > 0) { log.info(Thread.currentThread().getName()); JavaMailSenderImpl javaMailSender = senderConfig.getSender(); //一个复杂的邮件 MimeMessage message = javaMailSender.createMimeMessage(); try { //组装 MimeMessageHelper helper = new MimeMessageHelper(message, true); //主题(标题) helper.setSubject(account.getSubject()); helper.setText(account.getContent(), true); helper.setTo(account.getEmails().toArray(new String[account.getEmails().size()])); helper.setFrom(javaMailSender.getUsername()); javaMailSender.send(message); return true; } catch (MessagingException e) { logger.error("邮件发送失败!", e); return false; } } return false; } @Override public Boolean sendMessageUserEmail(String title, String content, List messageUserList) { List emails = messageUserList.stream().filter(e -> StringUtil.isNotBlank(e.getEmail())).map(MessageUser::getEmail).collect(Collectors.toList()); EmailAccount emailAccount = new EmailAccount(); emailAccount.setEmails(emails); emailAccount.setSubject(title); emailAccount.setContent(content); return senderEmail(emailAccount); } }