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

标签 java jakarta-mail

我正在使用以下代码在 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 );

最佳答案

二进制附件的编码方式确实应该使它们的不可打印字符消失。想到的最明显的方法是 BASE64 编码。

关于java - Java 中的二进制电子邮件附件中缺少 CR 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10800983/

相关文章:

java - System.out.print 导致延迟?

java - 获取 javax.mail.MessagingException : [EOF] on our live server, 但在我们的开发服务器上一切都按预期工作

java - 发送邮件不起作用并显示异常

java - MongoDB 多久检查一次它的索引 'expireAfterSeconds' ?

java - GraalVM 性能

java - 使用jmock如何重用参数

authentication - 是否可以在没有身份验证的情况下使用 Javamail 发送邮件?

java - 触摸后退出事件

没有 ssl 的 Java 邮件 - PKIX 路径构建失败 :

jakarta-mail - IMAP messageChangedListener() 没有被解雇