Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中二进制电子邮件附件中缺少CR字符_Java_Jakarta Mail - Fatal编程技术网

Java中二进制电子邮件附件中缺少CR字符

Java中二进制电子邮件附件中缺少CR字符,java,jakarta-mail,Java,Jakarta Mail,我使用以下代码在Java中发送二进制文件作为电子邮件附件。代码的工作原理是发送文件。但是,在收到的文件中,任何十六进制值$0d都会被删除或转换为$0a。由于该文件是二进制文件而不是文本文件,因此收到的文件不正确。有什么建议吗 Rgds, 海伦 二进制附件的编码方式应确保其不可打印字符消失。想到这一点,最明显的方法是BASE64编码。您可能应该添加更多的标记,因为这不是普通的Java。至少Java7API文档没有列出任何MIMessage类!谢谢你快速的回答。通过添加行messageBodyPar

我使用以下代码在Java中发送二进制文件作为电子邮件附件。代码的工作原理是发送文件。但是,在收到的文件中,任何十六进制值$0d都会被删除或转换为$0a。由于该文件是二进制文件而不是文本文件,因此收到的文件不正确。有什么建议吗

Rgds, 海伦


二进制附件的编码方式应确保其不可打印字符消失。想到这一点,最明显的方法是BASE64编码。

您可能应该添加更多的标记,因为这不是普通的Java。至少Java7API文档没有列出任何MIMessage类!谢谢你快速的回答。通过添加行messageBodyPart.setHeader(“内容传输编码”、“base64”)解决了问题;
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 );