1

次のコードを使用して、Java で電子メールの添付ファイルとしてバイナリ ファイルを送信しています。コードは、ファイルを送信するという点で機能します。ただし、受信したファイルでは、$0d の 16 進値が削除されるか、$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 );
4

1 に答える 1

3

バイナリの添付ファイルは、印刷できない文字がなくなるようにエンコードする必要があります。頭に浮かぶ最も明白な方法は、BASE64エンコーディングです。

于 2012-05-29T14:21:03.783 に答える