当有效负载包含“ 0.0.0”部件ID时,无法在OFBiz中存储电子邮件正文

时间:2018-06-21 05:39:37

标签: ofbiz

我正在从Gmail API提取原始数据。我解密数据并在基本实现中获得所需的内容。

当我的签名中包含图像并且发送一些附件时,我会遇到问题,然后Gmail JSON数据将具有复杂的层次结构,结果,我无法获取电子邮件内容。

从电子邮件的内容来看,我的意思是我们写的自定义消息,例如“你好,你好吗?”。

我正在获取所有其他东西,例如sendTo,附件等。

我从chrome应用程序中获取Gmail API原始数据,然后将其发送到我的OFBiz服务器,并在其中进行解密和处理。

更新: 经过四处搜寻,我发现问题出在OFBiz中MimeMessageWrapper.java的局限性。

以下代码在 partId格式为0.0、0..1等的情况下效果很好。

public String getMessageBody() {
        MimeMessage message = getMessage();
        if (getMainPartCount() == 0) { // single part message
            try {
                Object content = message.getContent();
                return getContentText(content);
            } catch (Exception e) {
                Debug.logError(e, module);
                return null;
            }
        }
        StringBuffer body = new StringBuffer();
        for (int i = 0; i < getMainPartCount(); i++) {
            int subPartCount = getSubPartCount(i);
            String idx = Integer.toString(i);
            if (subPartCount > 0) {
                for (int si = 0; si < subPartCount; si++) {
                    String sidx = idx + "." + Integer.toString(si);
                    if (getPartContentType(sidx) != null && getPartContentType(sidx).toLowerCase(Locale.getDefault()).startsWith("text")) {
                        if (getPartDisposition(sidx) == null || getPartDisposition(sidx).equals(Part.INLINE)) {
                            body.append(getPartText(sidx)).append("\n");
                        }
                    }
                }
            } else {
                if (getPartContentType(idx) != null && getPartContentType(idx).toLowerCase(Locale.getDefault()).startsWith("text")) {
                    // make sure the part isn't an attachment
                    if (getPartDisposition(idx) == null || getPartDisposition(idx).equals(Part.INLINE)) {
                        body.append(getPartText(idx)).append("\n");
                    }
                }
            }
        }
        return body.toString();
    }

需要改进此代码。请提出一些好的方法。

0 个答案:

没有答案