In order to send unicode offline message, we can modify the method getOfflineMsg of the class
net.sf.jml.protocol.soap.OIM as follow.
private String getOfflineMsg(Email email, String txt)
{
StringBuilder mess = new StringBuilder();
String displayName=new String();
try
{
displayName=new String(Base64.encode(session.getMessenger().getOwner().getDisplayName().getBytes("UTF-8")));
txt=new String(Base64.encode(txt.getBytes("UTF-8")));
}
catch (UnsupportedEncodingException uee)
{
uee.printStackTrace();
}
mess.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n");
mess.append("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\r\n xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" >");
mess.append(" <soap:Header>");
mess.append(" <From memberName=\"" + session.getMessenger().getOwner().getEmail().getEmailAddress()
+ "\" friendlyName=\"=?utf-8?B?" + displayName + "?=\"\r\n xml:lang=\"nl-nl\"\r\n proxy=\"MSNMSGR\"\r\n xmlns=\"http://messenger.msn.com/ws/2004/09/oim/\"\r\n msnpVer=\"MSNP15\"\r\n buildVer=\"8.5.1288.816\"/>");
mess.append(" <To memberName=\""+ email.getEmailAddress() + "\" xmlns=\"http://messenger.msn.com/ws/2004/09/oim/\"/>");
mess.append(" <Ticket passport=\"" + sso.getOimTicket().replaceAll("&", "&") + "\"\r\n appid=\"PROD0119GSJUC$18\"\r\n lockkey=\"" + lockkey + "\"\r\n xmlns=\"http://messenger.msn.com/ws/2004/09/oim/\"/>");
mess.append(" <Sequence xmlns=\"http://schemas.xmlsoap.org/ws/2003/03/rm\">\r\n");
mess.append(" <Identifier xmlns=\"http://schemas.xmlsoap.org/ws/2002/07/utility\">http://messenger.msn.com</Identifier>\r\n");
mess.append(" <MessageNumber>" + sentMsgNumber + "</MessageNumber>\r\n");
mess.append(" </Sequence>\r\n");
mess.append(" </soap:Header>\r\n");
mess.append(" <soap:Body>\r\n");
mess.append(" <MessageType xmlns=\"http://messenger.msn.com/ws/2004/09/oim/\">text</MessageType>\r\n");
mess.append(" <Content xmlns=\"http://messenger.msn.com/ws/2004/09/oim/\">MIME-Version: 1.0\r\n");
mess.append("Content-Type: text/plain; charset=UTF-8\r\n");
mess.append("Content-Transfer-Encoding: base64\r\n");
mess.append("X-OIM-Message-Type: OfflineMessage\r\n");
mess.append("X-OIM-Run-Id: {3A3BE82C-684D-4F4F-8005-CBE8D4F82BAD}\r\n");
mess.append("X-OIM-Sequence-Num: " + sentMsgNumber + "\r\n\r\n");
mess.append(" " + txt + "");
mess.append(" </Content>");
mess.append(" </soap:Body>");
mess.append("</soap:Envelope>");
return mess.toString();
}