发送附有附件的电子邮件

时间:2015-06-23 21:23:04

标签: java gmail email-attachments

我有一个发送邮件的功能,但现在我需要附上一份文件,但我不知道该怎么做,或者我能做到,这里是代码

public void enviar(){
    Properties props = System.getProperties();
    props.put("mail.smtp.starttls.enable", true); // added this line
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.user", "xxxx@gmail.com");
    props.put("mail.smtp.password", "xxxx");
    props.put("mail.smtp.port", "587");
    props.put("mail.smtp.auth", true);

    Session session = Session.getInstance(props,null);
    MimeMessage message = new MimeMessage(session);
    // Create the email addresses involved
    try {
        InternetAddress from = new InternetAddress("xxxx@gmail.com");
        message.setSubject("Informe fichadas");
        message.setFrom(from);
        message.addRecipients(Message.RecipientType.TO, InternetAddress.parse("xxxx@gmail.com"));

        // Create a multi-part to combine the parts
        Multipart multipart = new MimeMultipart("alternative");

        // Create your text message part
        BodyPart messageBodyPart = new MimeBodyPart();
        messageBodyPart.setText("some text to send");

        // Add the text part to the multipart
        multipart.addBodyPart(messageBodyPart);

        // Create the html part
        messageBodyPart = new MimeBodyPart();
        String htmlMessage = "Informe fichadas";
        messageBodyPart.setContent(htmlMessage, "text/html");
        multipart.addBodyPart(messageBodyPart);

        // Associate multi-part with message
        message.setContent(multipart);

        // Send message
        Transport transport = session.getTransport("smtp");
        transport.connect("smtp.gmail.com", "user", "pass");
        System.out.println("Transport: "+transport.toString());
        transport.sendMessage(message, message.getAllRecipients());


    } catch (AddressException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (MessagingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

我如何附加文件?该文件位于此路径中(C:\ hola.txt)

1 个答案:

答案 0 :(得分:2)

添加

         // Part two as attachment
         messageBodyPart = new MimeBodyPart();
         String filename = "c:\hola.txt";
         DataSource source = new FileDataSource(filename);
         messageBodyPart.setDataHandler(new DataHandler(source));
         messageBodyPart.setFileName(filename);
         multipart.addBodyPart(messageBodyPart);

正上方

 // Associate multi-part with message
         message.setContent(multipart);

来源:http://www.tutorialspoint.com/javamail_api/javamail_api_send_email_with_attachment.htm