1、設(shè)置系統(tǒng)值
System.setProperty(“mail.mime.splitlongparameters”, “false”);
2、 在創(chuàng)建對(duì)象的時(shí)候定義編碼格式(utf-8):
MimeMessageHelper helper = new MimeMessageHelper(mes, true, “utf-8”);
3、 其次,在添加附件的時(shí)候,附件名是需要定義編碼的
helper.addAttachment(MimeUtility.encodeWord(附件名,“utf-8”,“B”), 你的附件對(duì)象);
————————————————
版權(quán)聲明:本文為CSDN博主「往事不堪回首…」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq3892997/article/details/126013828
//生成的數(shù)據(jù)通過excel附件的方式,進(jìn)行發(fā)送。
public void sendMail(String mailFrom, String mailTo, String title, String content, File file) throws Exception {
System.setProperty("mail.mime.splitlongparameters", "false");//1.設(shè)置系統(tǒng)值 ---處理文件名亂碼
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper msg = new MimeMessageHelper(mimeMessage, true, "utf-8");//2.在創(chuàng)建對(duì)象的時(shí)候定義編碼格式(utf-8)
msg.addAttachment(MimeUtility.encodeWord(excelName,"utf-8","B"), file); //3.在添加附件的時(shí)候,附件名是需要定義編碼的 ---以上3條都得有,否則文件名亂碼
msg.setFrom(mailFrom);
msg.setTo(mailTo);
msg.setSubject(title);
msg.setText(content, true);
mailSender.send(mimeMessage);
}
工具類
@Component
@Slf4j
/**
* 發(fā)送郵件工具類
* @author ZMH
* @date 7/7/2023 2:03 下午
*/
public class EmailUtils {
@Autowired
private JavaMailSender javaMailSender;
/**
* 發(fā)送純文本郵件
* @author ZMH
* @date 7/7/2023 10:37 上午
* @param subject 郵件主題
* @param text 郵件內(nèi)容
* @param targetEmail 目標(biāo)郵件地址
* @param sourceEmail 源郵件地址
* @return void
*/
public void sendTextEmail (String subject,String text,String targetEmail,String sourceEmail ){
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setSubject(subject);//主題
mailMessage.setText(text);//內(nèi)容
if (StringUtils.isNotBlank(targetEmail) && targetEmail.split(",").length>1){
mailMessage.setTo(targetEmail.split(","));//多個(gè)號(hào)碼發(fā)送,該發(fā)送會(huì)將目標(biāo)郵件分組發(fā)送
}else {
mailMessage.setTo(targetEmail);
}
mailMessage.setFrom(sourceEmail);
javaMailSender.send(mailMessage);
}
/**
* 發(fā)送文本郵件和附件
* @author ZMH
* @date 7/7/2023 2:01 下午
* @param subject 主題
* @param text 文本內(nèi)容
* @param targetEmail 目標(biāo)郵件
* @param sourceEmail 源郵件
* @param annexList 附件List
* @param anneNameList 附件名稱List
* @return void
*/
public void sendTextAndAnnexEmail(String subject,String text,String targetEmail,String sourceEmail,
String personal, List<File> annexList,List<String> anneNameList ) throws MessagingException {
sendSeniorEmail(subject,null,false,text,targetEmail,sourceEmail,personal,annexList,anneNameList);
}
/**
* 發(fā)送郵件根據(jù)HTML模本文件
* @author ZMH
* @date 7/7/2023 11:16 上午
* @param subject 主題
* @param content 內(nèi)容
* @param targetEmail 目標(biāo)郵件
* @param sourceEmail 源郵件
* @return void
*/
public void sendHTMLEmail(String subject,String content,String targetEmail,String sourceEmail,String personal) throws MessagingException {
sendSeniorEmail(subject,content,true,"",targetEmail,sourceEmail,personal,null,null);
}
/**
* 發(fā)送模版文件并包含附件
* @author ZMH
* @date 7/7/2023 11:20 上午
* @param subject 主題
* @param content 內(nèi)容
* @param targetEmail 目標(biāo)郵件
* @param sourceEmail 源郵件
* @param annexList 附件
* @param annexNameList 附件名稱
* @return void
*/
public void sendHTMLAndAnnexEmail(String subject,String content,String targetEmail,
String sourceEmail,String personal,List<File> annexList,List<String> annexNameList) throws MessagingException {
sendSeniorEmail(subject,content,true,"",targetEmail,sourceEmail,personal,annexList,annexNameList);
}
/**
* 發(fā)送高級(jí)郵件
* @author ZMH
* @date 7/7/2023 11:26 上午
* @param subject 主題
* @param concent content
* @param targetEmail 目標(biāo)郵箱
* @param sourceEmail 源郵箱
* @param annexList 附件
* @param annexNameList 附件名稱
* @return void
*/
private void sendSeniorEmail(String subject, String concent, Boolean isHtml, String txet, String targetEmail,
String sourceEmail,String personal, List<File> annexList, List<String> annexNameList) throws MessagingException{
System.setProperty("mail.mime.splitlongparameters", "false");//1.設(shè)置系統(tǒng)值 ---處理文件名亂碼
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message,true,"utf-8");
helper.setSubject(subject);//郵件主題
try {
helper.setFrom(sourceEmail,personal);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (StringUtils.isNotBlank(targetEmail) && targetEmail.split(",").length>1){
helper.setTo(targetEmail.split(","));//多個(gè)號(hào)碼發(fā)送,該發(fā)送為分組發(fā)送
}else {
helper.setTo(targetEmail);
}
if (isHtml) {
//String absolutePath = htmlFile.getAbsolutePath();
//String htmlModel = FileUtil.getStringByFile(absolutePath);
concent = "<!DOCTYPE html>\n" +
"<html lang=\"en\">\n" +
"<head>\n" +
" <meta charset=\"UTF-8\">\n" +
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n" +
" <title></title>\n" +
"</head>\n" +
"<body>\n" +
" <div>" + concent + "</div>\n" +
"</body>\n" +
"</html>";
helper.setText(concent,true);
}else {
helper.setText(txet,false);
}
helper.setSentDate(new Date());//郵件發(fā)送時(shí)間
if (!CollectionUtils.isEmpty(annexList)){
if (CollectionUtils.isEmpty(annexNameList)){
for (File file : annexList) {
annexNameList.add(file.getName());
}
}else {
if (annexList.size()!= annexNameList.size()){
throw new MessagingException("附件名稱和附件條次不一致");
}
}
try {
for (int i = 0; i < annexList.size(); i++) {
helper.addAttachment(MimeUtility.encodeWord(annexNameList.get(i), "utf-8", "B"), annexList.get(i));
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
javaMailSender.send(message);
}
}
yml配置文件增加文章來源:http://www.zghlxwxcb.cn/news/detail-615687.html
spring:
mail:
username: 郵箱號(hào)碼
password: 授權(quán)碼
host: smtp.qq.com
port: 465
properties:
mail:
smtp:
auth: true
socketFactory:
class: javax.net.ssl.SSLSocketFactory
starttls:
enable: true
ssl:
enable: true
pom.xml 增加文章來源地址http://www.zghlxwxcb.cn/news/detail-615687.html
<!-- SpringEmail -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
到了這里,關(guān)于springboot 發(fā)送郵件,以及郵件工具類 并且解決spring-boot-starter-mail 發(fā)送郵件附件亂碼或者文件錯(cuò)亂的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!