该文件从未在JavaMail中发送

该文件从未在JavaMail中发送,java,smtp,jakarta-mail,Java,Smtp,Jakarta Mail,我正在尝试使用JavaMail API发送附件,但它无法正常工作。你能告诉我我犯的错误吗,ABC.pdf文件在项目的同一个文件中。在第一个sysout中,我确实在“s”中找到了正确的路径。程序从未到达第二个sysout。我已将电子邮件Id中的Id替换为“试用”。 请帮忙 Message message = new MimeMessage(session); message.setSubject("Trial Messages"); message.setFrom(

我正在尝试使用JavaMail API发送附件,但它无法正常工作。你能告诉我我犯的错误吗,ABC.pdf文件在项目的同一个文件中。在第一个sysout中,我确实在“s”中找到了正确的路径。程序从未到达第二个sysout。我已将电子邮件Id中的Id替换为“试用”。 请帮忙

Message message = new MimeMessage(session);
        message.setSubject("Trial Messages");
        message.setFrom(new InternetAddress("trial@gmail.com"));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("trial@yahoo.co.in"));

        MimeBodyPart body = new MimeBodyPart();
        body.setText(content);;
        Multipart part = new MimeMultipart();

        part.addBodyPart(body);

        File f = new File("ABC.pdf");
        String s = f.getAbsolutePath();

        System.out.printf(s);

        DataSource source = new FileDataSource(s);
        body.setDataHandler(new DataHandler(source));
        body.setFileName("ABC Bill");
        part.addBodyPart(body);

        System.out.printf(s);
        Transport.send(message);

        System.out.printf(s);
试着替换

body.setFileName("ABC Bill");

您可以在这里尝试将source.getName()传递给sysout,以查看是否所有内容都正确(正确的文件名) 加上

//将多部分添加到消息中

message.setContent(part);
删除
零件。添加车身零件(车身)因为您添加了两次

Message message = new MimeMessage(session);
        message.setSubject("Trial Messages");
        message.setFrom(new InternetAddress("trial@gmail.com"));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("trial@yahoo.co.in"));

        MimeBodyPart body = new MimeBodyPart();
        body.setText(content);;
        Multipart part = new MimeMultipart();


        File f = new File("ABC.pdf");
        String s = f.getAbsolutePath();

        System.out.printf(s);

        DataSource source = new FileDataSource(s);
        body.setDataHandler(new DataHandler(source));
        body.setFileName("ABC Bill");
        part.addBodyPart(body);

        message.setContent(part);
        System.out.printf(s);
        Transport.send(message);

        System.out.printf(s);

好的,我添加了消息。setContent(部分);这似乎解决了问题,但现在receipent接收到同一文件的两个附件。remove part.addBodyPart(body);因为是你加的twice@chettyharish它现在起作用了吗?然后接受答案,voteIt听起来好像你已经解决了所有问题,但是原始代码有两个问题-1)你没有将多部分设置为消息的内容,2)你为附件重新使用了MimeBodyPart对象,而不是创建一个新的MimeBodyPart对象。
Message message = new MimeMessage(session);
        message.setSubject("Trial Messages");
        message.setFrom(new InternetAddress("trial@gmail.com"));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("trial@yahoo.co.in"));

        MimeBodyPart body = new MimeBodyPart();
        body.setText(content);;
        Multipart part = new MimeMultipart();


        File f = new File("ABC.pdf");
        String s = f.getAbsolutePath();

        System.out.printf(s);

        DataSource source = new FileDataSource(s);
        body.setDataHandler(new DataHandler(source));
        body.setFileName("ABC Bill");
        part.addBodyPart(body);

        message.setContent(part);
        System.out.printf(s);
        Transport.send(message);

        System.out.printf(s);