我使用以下代码将二进制文件作为电子邮件附件发送到Java中。代码的工作原理是发送文件。但是,在收到的文件中,任何十六进制值$ 0d都会被删除或转换为$ 0a。由于文件是二进制文件而不是文本文件,因此接收的文件不正确。有什么建议吗?
RGDS, 海伦
String fileAttachment = "command.cmd";
Session session =
Session.getInstance(props, null);
// Define message
MimeMessage message =
new MimeMessage(session);
message.setFrom(
new InternetAddress(from));
message.addRecipient(
Message.RecipientType.TO,
new InternetAddress(to));
message.setSubject(emailSubject);
// create the message part
MimeBodyPart messageBodyPart =
new MimeBodyPart();
//fill message
messageBodyPart.setText("Hi");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
// Part two is attachment
messageBodyPart = new MimeBodyPart();
FileDataSource source =
new FileDataSource(fileAttachment);
System.out.println("Sending");
messageBodyPart.setDataHandler(
new DataHandler(source));
messageBodyPart.setFileName(fileAttachment);
messageBodyPart.setDisposition(Part.ATTACHMENT);
multipart.addBodyPart(messageBodyPart);
// Put parts in message
message.setContent(multipart);
// Send the message
Transport.send( message );
答案 0 :(得分:3)
二进制附件应该以不可打印字符消失的方式进行编码。想到这一点最明显的方法是BASE64编码。