2014-05-23 55 views
0

我正在尝试发送带附件的电子邮件。整个事情工作正常,除了附件发送的部分发送没有扩展名的附件。如何发送邮件的附件在发送时附有扩展名

例如,发送File.rar将收到file

这是怎么了,我这样做:

public class EmailSender { 

    public static void main(String[] args) { 
     String TO = "[email protected]"; 
     String host = "smtp.gmail.com"; 
     String port = "465"; 
     String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; 
     Properties mailConfig = new Properties(); 
     mailConfig.put("mail.smtp.host", host); 
     mailConfig.put("mail.smtp.socketFactory.port", port); 
     mailConfig.put("mail.smtp.socketFactory.class", SSL_FACTORY); 
     mailConfig.put("mail.smtp.auth", "true"); 
     mailConfig.put("mail.smtp.port", port); 

     Session session = Session.getDefaultInstance(mailConfig, 
      new Authenticator() { 
       protected PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication("Username", "Password"); 
       } 
      }); 

     try { 
      MimeMessage message = new MimeMessage(session); 
      message.setFrom(new InternetAddress("[email protected]")); 
      message.addRecipient(Message.RecipientType.TO, new InternetAddress(TO)); 
      message.setSubject("Email with Attachment SUBJECT"); 

      BodyPart messageBodyTxt = new MimeBodyPart(); 
      messageBodyTxt.setText("Email with Attachment BODY"); 

      MimeBodyPart messageBodyAttachment = new MimeBodyPart(); 
      String filePath = "D:\\Unlocker1.9.2.rar"; 
      DataSource source = new FileDataSource(filePath); 
      messageBodyAttachment.setDataHandler(new DataHandler(source)); 
      messageBodyAttachment.setFileName("Unlocker1.9.2" + ".rar"); 

      Multipart multipart = new MimeMultipart(); 
      multipart.addBodyPart(messageBodyTxt); 
      multipart.addBodyPart(messageBodyAttachment); 
      message.setContent(multipart); 

      Transport.send(message); 
      System.out.println("Email sent successfully"); 

     } catch (MessagingException e) { 
      throw new RuntimeException(e); 
     } 

    } 
} 
+0

content-disposition。 – bmargulies

回答

0

使用从评论的意见,正确的方法是setDisposition,你会设置对于有问题的MimeBodyPart。因此,使用上面的代码,可以这样做:

messageBodyAttachment.setDisposition(javax.mail.Part.ATTACHMENT);