Java完成发送邮箱过程中遇见的问题
发送的文件收到后成.bin文件
在网上查到是因为名称过长导致,用了帖子上的方法,不行,遂改文件名,成功。
// multipart对象中添加附件
List<String> attachments = mailParams.getMailAttachments();
if (attachments != null) {
for (int i = 0; i < attachments.size(); i++) {
BodyPart filePart = new MimeBodyPart();
filePart.setDataHandler(
new DataHandler(
new ByteArrayDataSource(
Files.readAllBytes(
Paths.get(String.valueOf(attachments.get(i)))),"application/octet-stream")));
filePart.setFileName(MimeUtility.encodeWord(mailParams.getFileName() + "(" + (i + 1) +")." + attachments.get(i).split("\\.")[1]));
multipart.addBodyPart(filePart);
}
}
发送邮件报错处理com.sun.mail.smtp.SMTPSendFailedException: 501 Mail from address must be same as authorization user
翻译:501 来自地址的邮件必须与authorization user一样
错误原因:setFrom只写了发送者名称,没有发送者邮箱,导致发送邮箱不一致
// 正确写法
message.setFrom(new InternetAddress(mailParams.getEmailUserName(), mailParams.getEmailFrom(), "utf-8"));
发送的邮箱是正文乱码的,全是?
错误原因:编码错误
解决方法:在setContent加上 “text/plain; charset=UTF-8”,重要的是charset=UTF-8
// 正文,1为文本模式,2为富文本模式
BodyPart bodyPart = new MimeBodyPart();
bodyPart.setContent(mailParams.getMailContent(), "1".equals(mailParams.getMailType()) ? "text/plain; charset=UTF-8" : "text/html; charset=UTF-8");