如何使用 Java 邮件在邮件中附加 PDF


public static String sendMail(
                    String destino,
                    String texto,
                    String asunto,
                    byte[] formulario,
                    String nombre) {
            Properties properties = new Properties();
            try{
            Session session = Session.getInstance(properties);
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("reminder@companyname.com.ar"));
            //Cargo el destino
            if(destino!= null && destino.length > 0 && destino[0].length() > 0 ){
                for (int i = 0; i < destino.length; i++) {
                    message.addRecipient(Message.RecipientType.TO,new InternetAddress(destino[i]));
                }
            }
            //message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
            message.setSubject(asunto);
            //I load the text and replace all the '&' for 'Enters' and the '#' for tabs
            message.setText(texto.replaceAll("&","n").replaceAll("#","t"));
            Transport.send(message);
            return "Mensaje enviado con éxito";
        }catch(Exception mex){
            return mex.toString();
        }
   }

大家好。

我试图弄清楚如何附加参数发送的 PDF 作为前面显示的代码中的formulario

该公司曾经为此事做过以下技巧,但他们需要将其更改为之前显示的技巧:

        MimeBodyPart messageBodyPart = new MimeBodyPart();
        messageBodyPart.setText(
            texto.replaceAll("&", "n").replaceAll("#", "t"));
        //msg.setText(texto.replaceAll("&","n").replaceAll("#","t"));
        Multipart multipart = new MimeMultipart();
        multipart.addBodyPart(messageBodyPart);
        messageBodyPart = new MimeBodyPart();
        messageBodyPart.setDataHandler(
            new DataHandler(
                (DataSource) new InputStreamDataSource(formulario,
                "EDD",
                "application/pdf")));
        messageBodyPart.setFileName(nombre + ".pdf");
        multipart.addBodyPart(messageBodyPart);
        msg.setContent(multipart);
        msg.saveChanges();
        Transport transport = session.getTransport("smtp");
        transport.connect(
            "smtp.gmail.com",
            "reminder@companyname.com.ar",
            "companypassword");
        transport.sendMessage(msg, msg.getAllRecipients());
        transport.close();
        return "Mensaje enviado con éxito";
    } catch (Exception mex) {
        return mex.toString();

由于您已经可以发送电子邮件,因此请调整代码并将以下部分添加到代码中

// Create a default MimeMessage object.
 Message message = new MimeMessage(session);
 // Set From: header field of the header.
 message.setFrom(new InternetAddress(from));
 // Set To: header field of the header.
 message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse(to));
 // Set Subject: header field
 message.setSubject("Testing Subject");
 // Create the message part
 BodyPart messageBodyPart = new MimeBodyPart();
 // Now set the actual message
 messageBodyPart.setText("This is message body");
// Create a multipar message
 Multipart multipart = new MimeMultipart();
 // Set text message part
 multipart.addBodyPart(messageBodyPart);
 // Part two is attachment
 messageBodyPart = new MimeBodyPart();
 String filename = "/home/file.pdf";
 DataSource source = new FileDataSource(filename);
 messageBodyPart.setDataHandler(new DataHandler(source));
 messageBodyPart.setFileName(filename);
 multipart.addBodyPart(messageBodyPart);
 // Send the complete message parts
 message.setContent(multipart);
 // Send message
 Transport.send(message);
 System.out.println("Sent message successfully....");

原始代码取自此处

在这两种情况下formulario都是字节数组吗? 如果是这样,只需重写第一个代码块,以使用第二个代码块中的技术构造消息。 或者在新版本中将 InputStreamDataSource 替换为 ByteArrayDataSource。

发送带有附件的电子邮件类似于发送电子邮件,但这里的附加功能是通过使用MimeBodyPartBodyPart类发送文件或文档的消息。

发送带有附件的邮件的过程涉及会话对象、MimeBody MultiPart对象。在这里,MimeBody用于设置文本消息,它由MultiPart对象携带。因为MultiPart对象在这里发送附件。

       try {
            // Create a default MimeMessage object.
            Message message = new MimeMessage(session);
            // Set From: header field of the header.
            message.setFrom(new InternetAddress(from));
            // Set To: header field of the header.
            message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse(to));
            // Set Subject: header field
            message.setSubject("Attachment");
            // Create the message part
            BodyPart messageBodyPart = new MimeBodyPart();
            // Now set the actual message
            messageBodyPart.setText("Please find the attachment below");
            // Create a multipar message
            Multipart multipart = new MimeMultipart();
            // Set text message part
            multipart.addBodyPart(messageBodyPart);
            // Part two is attachment
            messageBodyPart = new MimeBodyPart();
            String filename = "D:/test.PDF";
            DataSource source = new FileDataSource(filename);
            messageBodyPart.setDataHandler(new DataHandler(source));
            messageBodyPart.setFileName(filename);
            multipart.addBodyPart(messageBodyPart);
            // Send the complete message parts
            message.setContent(multipart);
            // Send message
            Transport.send(message);
            System.out.println("Email Sent Successfully !!");
        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }

相关内容

  • 没有找到相关文章

最新更新