NET-673 IMAPClient.APPEND does not always calculate the correct length
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index d7b5670..643e18d 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -74,6 +74,9 @@
The examples are not part of the public API, so this does not affect compatibility.
">
+ <action issue="NET-673" type="fix" dev="sebb">
+ IMAPClient.APPEND does not always calculate the correct length
+ </action>
<action issue="NET-646" type="add" dev="sebb">
ALLO FTP Command for files >2GB
</action>
diff --git a/src/main/java/org/apache/commons/net/imap/IMAPClient.java b/src/main/java/org/apache/commons/net/imap/IMAPClient.java
index fd243a3..51e306f 100644
--- a/src/main/java/org/apache/commons/net/imap/IMAPClient.java
+++ b/src/main/java/org/apache/commons/net/imap/IMAPClient.java
@@ -266,12 +266,12 @@
}
}
args.append(" ");
- // String literal (probably not used much - it at all)
+ // String literal (probably not used much - if at all)
if (message.startsWith(DQUOTE_S) && message.endsWith(DQUOTE_S)) {
args.append(message);
return doCommand (IMAPCommand.APPEND, args.toString());
}
- args.append('{').append(message.length()).append('}'); // length of message
+ args.append('{').append(message.getBytes(IMAP.__DEFAULT_ENCODING).length).append('}'); // length of message
final int status = sendCommand(IMAPCommand.APPEND, args.toString());
return IMAPReply.isContinuation(status) // expecting continuation response
&& IMAPReply.isSuccess(sendData(message)); // if so, send the data