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"?>rn");
mess.append("<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"rn xmlns:xsd="http://www.w3.org/2001/XMLSchema"rn 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 + "?="rn xml:lang="nl-nl"rn proxy="MSNMSGR"rn xmlns="http://messenger.msn.com/ws/2004/09/oim/"rn msnpVer="MSNP15"rn 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("&", "&") + ""rn appid="PROD0119GSJUC$18"rn lockkey="" + lockkey + ""rn xmlns="http://messenger.msn.com/ws/2004/09/oim/"/>");
mess.append(" <Sequence xmlns="http://schemas.xmlsoap.org/ws/2003/03/rm">rn");
mess.append(" <Identifier xmlns="http://schemas.xmlsoap.org/ws/2002/07/utility">http://messenger.msn.com</Identifier>rn");
mess.append(" <MessageNumber>" + sentMsgNumber + "</MessageNumber>rn");
mess.append(" </Sequence>rn");
mess.append(" </soap:Header>rn");
mess.append(" <soap:Body>rn");
mess.append(" <MessageType xmlns="http://messenger.msn.com/ws/2004/09/oim/">text</MessageType>rn");
mess.append(" <Content xmlns="http://messenger.msn.com/ws/2004/09/oim/">MIME-Version: 1.0rn");
mess.append("Content-Type: text/plain; charset=UTF-8rn");
mess.append("Content-Transfer-Encoding: base64rn");
mess.append("X-OIM-Message-Type: OfflineMessagern");
mess.append("X-OIM-Run-Id: {3A3BE82C-684D-4F4F-8005-CBE8D4F82BAD}rn");
mess.append("X-OIM-Sequence-Num: " + sentMsgNumber + "rnrn");
mess.append(" " + txt + "");
mess.append(" </Content>");
mess.append(" </soap:Body>");
mess.append("</soap:Envelope>");
return mess.toString();
}
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"?>rn");
mess.append("<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"rn xmlns:xsd="http://www.w3.org/2001/XMLSchema"rn 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 + "?="rn xml:lang="nl-nl"rn proxy="MSNMSGR"rn xmlns="http://messenger.msn.com/ws/2004/09/oim/"rn msnpVer="MSNP15"rn 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("&", "&") + ""rn appid="PROD0119GSJUC$18"rn lockkey="" + lockkey + ""rn xmlns="http://messenger.msn.com/ws/2004/09/oim/"/>");
mess.append(" <Sequence xmlns="http://schemas.xmlsoap.org/ws/2003/03/rm">rn");
mess.append(" <Identifier xmlns="http://schemas.xmlsoap.org/ws/2002/07/utility">http://messenger.msn.com</Identifier>rn");
mess.append(" <MessageNumber>" + sentMsgNumber + "</MessageNumber>rn");
mess.append(" </Sequence>rn");
mess.append(" </soap:Header>rn");
mess.append(" <soap:Body>rn");
mess.append(" <MessageType xmlns="http://messenger.msn.com/ws/2004/09/oim/">text</MessageType>rn");
mess.append(" <Content xmlns="http://messenger.msn.com/ws/2004/09/oim/">MIME-Version: 1.0rn");
mess.append("Content-Type: text/plain; charset=UTF-8rn");
mess.append("Content-Transfer-Encoding: base64rn");
mess.append("X-OIM-Message-Type: OfflineMessagern");
mess.append("X-OIM-Run-Id: {3A3BE82C-684D-4F4F-8005-CBE8D4F82BAD}rn");
mess.append("X-OIM-Sequence-Num: " + sentMsgNumber + "rnrn");
mess.append(" " + txt + "");
mess.append(" </Content>");
mess.append(" </soap:Body>");
mess.append("</soap:Envelope>");
return mess.toString();
}