protected long getParentMessageId(String recipient, Message message) throws Exception {

    if (!StringUtil.startsWith(recipient, MBUtil.MESSAGE_POP_PORTLET_PREFIX)) {

      return MBUtil.getParentMessageId(message);
    }

    int pos = recipient.indexOf(CharPool.AT);

    if (pos < 0) {
      return MBUtil.getParentMessageId(message);
    }

    String target = recipient.substring(MBUtil.MESSAGE_POP_PORTLET_PREFIX.length(), pos);

    String[] parts = StringUtil.split(target, StringPool.PERIOD);

    long parentMessageId = 0;

    if (parts.length == 2) {
      parentMessageId = GetterUtil.getLong(parts[1]);
    }

    if (parentMessageId > 0) {
      return parentMessageId;
    }

    return MBUtil.getParentMessageId(message);
  }