javamail问题:如何在不创建文件的情况下附加文件

moa*_*moa 5 java attachment jakarta-mail

我正在使用javamail API创建电子邮件并将文件附加到它.

有没有办法使用javamail api发送带附件的电子邮件,而无需在文件系统上物理创建文件.

我只想从应用程序中选择一些数据并将其作为文件附加到我的电子邮件中

我该如何附上:

try {
            // create a message
            MimeMessage msg = new MimeMessage(session);
            msg.setFrom(new InternetAddress(from));
            InternetAddress[] address = {new InternetAddress(to)};
            msg.setRecipients(Message.RecipientType.TO, address);
            msg.setSubject(subject);

            // create and fill the first message part
            MimeBodyPart mbp1 = new MimeBodyPart();
            mbp1.setText(msgText1);

            // create the second message part
            MimeBodyPart mbp2 = new MimeBodyPart();

            // attach the file to the message
            **mbp2.attachFile(filename);**


            // create the Multipart and add its parts to it
            Multipart mp = new MimeMultipart();
            mp.addBodyPart(mbp1);
            mp.addBodyPart(mbp2);

            // add the Multipart to the message
            msg.setContent(mp);

            // set the Date: header
            msg.setSentDate(new Date());

            // send the message
            Transport.send(msg);
Run Code Online (Sandbox Code Playgroud)

TY非常多!

Nik*_*ohl 11

如果您使用的是JavaMail 1.4或更高版本,则可以java.mail.util.ByteArrayDataSource像这样使用

MimeBodyPart mbp = new MimeBodyPart();
String data = "any ASCII data";
DataSource ds = new ByteArrayDataSource(data, "application/x-any");
mbp.setDataHandler(new DataHandler(ds));
Run Code Online (Sandbox Code Playgroud)

  • (对于子孙后代,@ Nikolaus意为'setFileName`和`MimeBodyPart`,而不是`getFileName`和`MimeMultipart`.) (2认同)