How do I preserve the original file's extension?
The following code (taken from JavaMail examples) attaches all files found in specified directory. The file names are OK, but the file extensions are all "MIM".
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.io.*;
public class MailAttach {
public static void main (String args[]) throws Exception {
if(args.length < 4) {
System.out.println("MailAttach <host> <from> <to> <dir> [cc]") ;
System.exit(1) ;
}
String host = args[0];
String from = args[1];
String to = args[2];
String directory = args[3];
System.out.println("host = " +host) ;
System.out.println("from = " +from) ;
System.out.println("to = " +to) ;
System.out.println("dir = " +directory) ;
String cc = null ;
if (args.length > 4) {
cc = args[4] ;
System.out.println("cc = " +cc) ;
}
Properties props = System.getProperties();
props.put("mail.smtp.host", host);
Session session = Session.getInstance(props, null);
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
message.setSubject("Directory Attachments");
if (cc != null) {
message.setRecipients(Message.RecipientType.CC,
InternetAddress.parse(cc, false));
}
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("Directory: " + directory);
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
File dir = new File(directory);
String list[] = dir.list();
for (int i=0, n=list.length; i<n; i++) {
File f = new File(directory +"/" +list);
if (f.isFile()) {
System.out.println("Adding: " directory "/"+list[i]);
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(directory +"/" +list[i]);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(list[i]);
multipart.addBodyPart(messageBodyPart);
}
else {
System.out.println(f.toString() +" is not a file!") ;
}
}
message.setContent(multipart);
Transport.send(message);
System.out.println("Mail sent successfully") ;
}
}
Thanks