有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在javamail api中将文件作为附件上传?

嗨,我是JavaMail的新手

我想上传一个文件作为附件。它只存储文件名

文件仅成功附加了文件名,而不是该文件的内容

如何解决这个问题。先谢谢你

我尝试了以下代码:

Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(fromAddress));
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse(toAddr));

        if (subject == null) {
            message.setSubject("");
        } else {
            message.setSubject(subject);
        }

        if (attachedFile == null || attachedFile.equalsIgnoreCase("")) {
            if (content == null) {
                message.setText("");
            } else {
                message.setText(content);
            }

        } else {
            // Create the message part
            BodyPart messageBodyPart = new MimeBodyPart();

            if (content == null) {
                messageBodyPart.setText("");
            } else {
                messageBodyPart.setText(content);
            }

            // Create a multipar message
            Multipart multipart = new MimeMultipart();

            // Set text message part
            multipart.addBodyPart(messageBodyPart);

            // Part two is attachment
            // messageBodyPart = new MimeBodyPart();
            DataSource source = new ByteArrayDataSource(
                    attachedFile.getBytes("UTF-8"),
                    "application/octet-stream");
            messageBodyPart = new MimeBodyPart();

            // DataSource source = new FileDataSource(attchedFile);
            messageBodyPart.setDataHandler(new DataHandler(source));
            messageBodyPart.setFileName(attachedFile);
            // messageBodyPart.setHeader("Content-ID", "image/*");
            multipart.addBodyPart(messageBodyPart);
            message.setContent(multipart);
        }

        Transport.send(message);

共 (2) 个答案

  1. # 1 楼答案

     MimeMessage message = new MimeMessage(session);
    
     // create the message 
     MimeBodyPart messageBodyPart = new MimeBodyPart();
    
     //fill message to be sent
     messageBodyPart.setText("Hi hello try and send this message");
    
     Multipart multipart = new MimeMultipart();
     multipart.addBodyPart(messageBodyPart);
    
     //attach your file here
     messageBodyPart = new MimeBodyPart();
     DataSource source =  new FileDataSource(fileAttachment); // your file
     messageBodyPart.setDataHandler( new DataHandler(source));
     messageBodyPart.setFileName(fileAttachment);
     multipart.addBodyPart(messageBodyPart);
    
     // Put message in parts
     message.setContent(multipart);
    
    
     Transport.send( message );
    
  2. # 2 楼答案

        MimeBodyPart messageBodyPart = new MimeBodyPart();
    
        messageBodyPart.setContent(body, "text/plain");
    
        Multipart multipart = new MimeMultipart();
        multipart.addBodyPart(messageBodyPart);
    
        // adds attachments
    
    
                MimeBodyPart attachPart = new MimeBodyPart();
    
    
                File file=new File("Z:/filename");
    
                try {
    
                    attachPart.attachFile(file);
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
    
                multipart.addBodyPart(attachPart);
    
        // sets the multi-part as e-mail's content
        message.setContent(multipart);
    

    也许这样行