为什么使用Java mail上传的附件的附件名是乱码,写代码处理。
时间: 2024-02-20 10:00:44 浏览: 247
使用Java Mail发送邮件时,如果上传的附件文件名包含非英文字符,会出现乱码现象。解决这个问题的方法是使用MimeUtility类中提供的encodeText()方法对文件名进行编码,具体代码如下:
```java
// 创建邮件对象
MimeMessage message = new MimeMessage(session);
// 设置发件人、收件人、主题等信息
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject(subject);
// 创建附件
MimeBodyPart attachmentPart = new MimeBodyPart();
FileDataSource fds = new FileDataSource(attachment);
attachmentPart.setDataHandler(new DataHandler(fds));
// 对附件文件名进行编码
String fileName = fds.getName();
fileName = MimeUtility.encodeText(fileName, "UTF-8", "B");
attachmentPart.setFileName(fileName);
// 将附件添加到邮件中
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(attachmentPart);
message.setContent(multipart);
// 发送邮件
Transport.send(message);
```
在上述代码中,我们使用了MimeUtility.encodeText()方法对附件文件名进行编码,其中第一个参数是需要编码的字符串,第二个参数是字符集,第三个参数是编码方式。在这个例子中,我们使用了UTF-8字符集和Base64编码方式对文件名进行编码,确保邮件中的附件名不会出现乱码。
阅读全文