ronaldo - 2009-03-23

In order to send to unicode offline message, you 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)
                {
                    e.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("&", "&amp;") + "\"\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();
    }