xinyb
5 天以前 56d9f6a0b1ecfce70da391d406fcc92274cc1b03
src/com/yc/crm/mail/service/MailServiceImpl.java
@@ -2,11 +2,14 @@
import com.sun.mail.imap.IMAPBodyPart;
import com.sun.mail.imap.IMAPStore;
import com.yc.action.grid.GridUtils;
import com.yc.crm.mail.action.MailPush;
import com.yc.crm.mail.entity.FoundationEntity;
import com.yc.crm.mail.entity.MailFileEntity;
import com.yc.crm.mail.entity.T482102Entity;
import com.yc.crm.mail.entity.t482101HEntity;
import com.yc.entity.attachment.AttachmentEntity;
import com.yc.factory.FactoryBean;
import com.yc.service.BaseService;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
@@ -139,7 +142,11 @@
            properties.setProperty("mail.smtp.ssl.enable", emailEntity.isSmtpSSL() + "");// // 设置启用SSL加密
            properties.setProperty("mail.smtp.host", emailEntity.getSmtpHost());
            properties.setProperty("mail.smtp.port", emailEntity.getSmtpPort() + "");
            //Could not connect to SMTP host: smtp.qq.com, port: 465, response: -1 by danaus 2024-09-23 11:01
            // properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            // MailSSLSocketFactory sf = new MailSSLSocketFactory("TLSv1.2");
            // properties.put("mail.smtp.ssl.socketFactory", sf);
            // properties.setProperty("mail.smtp.ssl.protocols", "TLSv1.2");
//            properties.setProperty("mail.smtp.starttls.enable", "true");//// SMTP 协议设置 STARTTLS  开启tls
//            properties.setProperty("mail.smtp.socketFactory.port", emailEntity.getSmtpPort() + "");
@@ -271,6 +278,7 @@
     * @throws MessagingException
     * @throws IOException
     */
    @Override
    public void setMailContent(Message[] messages, T482102Entity email, FoundationEntity foundation) throws
            Exception {
        try {
@@ -342,7 +350,7 @@
                        List<MailFileEntity.MailBodyPart> part = new ArrayList<>();
                        String unId = UUID.randomUUID().toString().toUpperCase();
                        StringBuilder attachment = new StringBuilder();
                        result = getTextFromMimeMultipart((MimeMultipart) m.getContent(), plainText, part, unId, attachment);
                        result = getTextFromMimeMultipart((MimeMultipart) m.getContent(), plainText, part, unId, attachment, foundation.getDbId());
                        mailFile.setPart(part);
                        mailFile.setUnId(unId);//生成uuid
                        mail.setMailFile(mailFile);//附件添加到里面
@@ -390,8 +398,13 @@
                }
            }
            if (t482101HEntityList.size() > 0) {
                mailIfc.saveReceivingMailList(t482101HEntityList);//保存
                String docCodeList = mailIfc.saveReceivingMailList(t482101HEntityList);//保存
                mailAccountIfc.updateEmailTime(email.getAccountId());//更新一次配置
                //发送通知(极光和webscoket)
                //取用户的手机号
                BaseService baseService = (BaseService) FactoryBean.getBean("BaseService");
                String tel = baseService.getJdbcTemplate().queryForObject("select tel  from    _sys_LoginUser where usercode=" + GridUtils.prossSqlParm(foundation.getUserCode()), String.class);
                MailPush.pushEmailInfo(t482101HEntityList, docCodeList, foundation.getDbId(), tel);
            }
        } catch (Exception e) {
            throw e;
@@ -407,7 +420,7 @@
     */
    // 辅助方法,用于递归获取纯文本邮件内容
    private String getTextFromMimeMultipart(MimeMultipart mimeMultipart, StringBuilder
            plainText, List<MailFileEntity.MailBodyPart> part, String unId, StringBuilder attachment) throws Exception {
            plainText, List<MailFileEntity.MailBodyPart> part, String unId, StringBuilder attachment, Integer dbId) throws Exception {
        int count = mimeMultipart.getCount();
        if (count == 0) {
            throw new MessagingException("Multipart with no body parts");
@@ -424,10 +437,17 @@
                    result.append(bodyPart.getContent());
                }
            }
        } else {
            if (StringUtils.isBlank(result.toString())) {//没html时候把纯文本赋值过去
                result.append(plainText);
            }
        }
//        else {
            for (int i = 0; i < count; i++) {
                BodyPart bodyPart = mimeMultipart.getBodyPart(i);
                if (bodyPart.isMimeType("image/*")) {//图片
//                if (bodyPart.isMimeType("text/html")) {//这个是获取html格式
//                    result.append(bodyPart.getContent());
//                }else
                    if (bodyPart.isMimeType("image/*")) {//图片
                    MailFileEntity.MailBodyPart p = new MailFileEntity.MailBodyPart();
                    String fileName = "xxx.jpg";
                    if (StringUtils.isNotBlank(bodyPart.getFileName())) {
@@ -453,7 +473,7 @@
                    String nextResult = result.toString();
                    if (nextResult.contains(cId)) {//有嵌套内容
                        //替换
                        nextResult = nextResult.replace("cid:" + cId + "", shoppingImageServer + "/uploads/email/82/482101/" + unId + "@p@" + p.getPhysicalFile());
                        nextResult = nextResult.replace("cid:" + cId + "", shoppingImageServer + "/uploads/email/" + dbId + "/482101/" + unId + "@p@" + p.getPhysicalFile());
                        result.setLength(0);//清空先
                        result.append(nextResult);
                    }
@@ -475,10 +495,10 @@
                    attachment.append(";" + fieldId);
                    part.add(p);
                } else if (bodyPart.isMimeType("multipart/*")) {
                    result.append(getTextFromMimeMultipart((MimeMultipart) bodyPart.getContent(), plainText, part, unId, attachment));
                    result.append(getTextFromMimeMultipart((MimeMultipart) bodyPart.getContent(), plainText, part, unId, attachment, dbId));
                }
            }
        }
//        }
        return result.toString();
    }