Java完成发送邮箱过程中遇见的问题

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");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值