| | |
| | | |
| | | 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; |
| | |
| | | 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() + ""); |
| | | |
| | |
| | | * @throws MessagingException |
| | | * @throws IOException |
| | | */ |
| | | @Override |
| | | public void setMailContent(Message[] messages, T482102Entity email, FoundationEntity foundation) throws |
| | | Exception { |
| | | try { |
| | |
| | | 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);//附件添加到里面 |
| | |
| | | } |
| | | } |
| | | 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; |
| | |
| | | */ |
| | | // 辅助方法,用于递归获取纯文本邮件内容 |
| | | 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"); |
| | |
| | | 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())) { |
| | |
| | | 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); |
| | | } |
| | |
| | | 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(); |
| | | } |
| | | |
| | |
| | | textHtmlFound = true; |
| | | } |
| | | } |
| | | return textPlainFound && textHtmlFound; |
| | | return textPlainFound || textHtmlFound; |
| | | } |
| | | |
| | | /** |