Browse Source

Fixed issue#345 - IMAP mail fetching stops working on spam mail and invalid email format. Scheduler will now keep running and store failed mail under tmp/unprocessable_mail/.

Martin Edenhofer 8 years ago
parent
commit
4d42c54bf1

+ 3 - 4
app/models/channel/driver/imap.rb

@@ -183,10 +183,9 @@ example
       # delete email from server after article was created
       msg = @imap.fetch(message_id, 'RFC822')[0].attr['RFC822']
       next if !msg
-      if process(channel, msg)
-        @imap.store(message_id, '+FLAGS', [:Deleted])
-        count_fetched += 1
-      end
+      process(channel, msg, false)
+      @imap.store(message_id, '+FLAGS', [:Deleted])
+      count_fetched += 1
     end
     @imap.expunge()
     disconnect

+ 3 - 4
app/models/channel/driver/pop3.rb

@@ -145,10 +145,9 @@ returns
       end
 
       # delete email from server after article was created
-      if process(channel, m.pop)
-        m.delete
-        count_fetched += 1
-      end
+      process(channel, m.pop, false)
+      m.delete
+      count_fetched += 1
     end
     disconnect
     if count.zero?

+ 12 - 2
app/models/channel/email_parser.rb

@@ -364,13 +364,22 @@ class Channel::EmailParser
   parser = Channel::EmailParser.new
   ticket, article, user = parser.process(channel, email_raw_string)
 
-retrns
+returns
 
   [ticket, article, user]
 
+do not raise an exception - e. g. if used by scheduler
+
+  parser = Channel::EmailParser.new
+  ticket, article, user = parser.process(channel, email_raw_string, fakse)
+
+returns
+
+  [ticket, article, user] || false
+
 =end
 
-  def process(channel, msg)
+  def process(channel, msg, exception = true)
 
     _process(channel, msg)
   rescue => e
@@ -388,6 +397,7 @@ retrns
     File.open(filename, 'wb') { |file|
       file.write msg
     }
+    return false if exception == false
     raise e.inspect + e.backtrace.inspect
   end
 

+ 336 - 0
test/fixtures/mail44.box

@@ -0,0 +1,336 @@
+Return-Path: <claudia.shu@yahoo.com>
+Delivered-To: support@domain.de
+Received: from localhost (unknown [1.2.3.4])
+	by mail.domain.com (Postfix) with ESMTP id 03C7C4D8103
+	for <support@domain.de>; Wed,  2 Nov 2016 01:33:22 +0100 (CET)
+Received: from mail.domain.com ([1.2.3.4])
+ by localhost (domain.com [1.2.3.4]) (amavisd-maia, port 10024)
+ with ESMTP id 19269-07 for <support@domain.de>;
+ Wed,  2 Nov 2016 01:33:11 +0100 (CET)
+Received: from yahoo.com. (unknown [106.6.98.128])
+	by mail.domain.com (Postfix) with ESMTP id 6E6634D8102
+	for <abuse@domain.com>; Wed,  2 Nov 2016 01:33:08 +0100 (CET)
+From: "Clement.Si" <Claudia.Shu@yahoo.com.>
+Subject: =?GB2312?B?vqvS5sn6svrJwbvpLMrHy621xNTwyM4=?=
+To: abuse@domain.com
+Content-Type: text/plain;charset="GB2312"
+Date: Wed, 2 Nov 2016 08:33:12 +0800
+X-Priority: 3
+X-Mailer: Foxmail 4.1 [cn]
+Message-Id: <20161102003309.6E6634D8102@mail.domain.com>
+X-DSPAM-Result: Spam
+X-DSPAM-Processed: Wed Nov  2 01:33:20 2016
+X-DSPAM-Confidence: 0.9625
+X-DSPAM-Probability: 1.0000
+X-DSPAM-Signature: 58193450197451094618578
+X-Virus-Scanned: Maia Mailguard 1.0.4
+X-Spam-Status: No, hits=7.857 tagged_above=0 required=999
+ tests=FREEMAIL_FORGED_FROMDOMAIN=0.001, FREEMAIL_FROM=0.001,
+ FSL_HELO_FAKE=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.001,
+ RCVD_IN_BRBL_LASTEXT=1.644, RCVD_IN_PBL=3.558, RCVD_IN_XBL=0.724,
+ RDNS_NONE=1.274, SPF_HELO_NEUTRAL=0.001, SPF_NEUTRAL=0.652
+X-Spam-Level: *******
+
+
+
+                       标杆考察-丰田精益生产考察研修班(广州)
+
+                       ——中国精益生产第一课
+                       ——中国独家推出:工业4.0下的精益体系构建
+
+
+                2016年11月16-18日(第119期)    2016年12月21-23日(第120期)
+
+==================================================================================
+研修背景:
+中国企业自2004年已经进入了微利时代;
+传统制造无法适应:多品种、小批量、短交期;
+制造业如何面对工业4.0,中国制造2025?
+走进丰田精益生产考察研修,所见即所得,引领制造变革。
+
+研修目的:
+系统掌握原汁原味的丰田TPS、TW精髓;
+通过理论与实践相结合的研修找到适合自己企业的低成本策略;
+工业4.0大趋势下,制造业对精益化、信息化、自働化、智能化的正确把握。
+
+参加对象:
+董事长、总经理、副总、厂长、生产管理、供应链管理、仓储管理、物流管理、采购管理、等
+生产制造管理相关职位
+
+研修特色 :
+精益样板工厂参观 + 在职高管分享交流 + 专家点评专题课程 + 学员企业现场诊断
+
+标杆企业背景:
+【成立时间】2004年9月1日   
+【地       址】广州市南沙区
+【面      积】占地面积187万m2 建筑面积44万m
+    广汽丰田秉承丰田数十年汽车制造之精义,引进全球最先进的生产设备和工艺,以建设“
+丰田全球模范工厂”为目标,将JIT应用于公司的整个生产经营过程,实践丰田管理方式,打
+造以人为本的工作环境,培养能够实践丰田管理方式的人才。在生产管理上,更精心营造人与
+人之间的和谐氛围,用心构筑最具人性化的工厂,充分发挥人与科技完美结合的优势,真正实
+现对科技的突破。
+
+过往典型学员:
+
+派出学员超过100人以上的企业:
+美的集团、山东蔚蓝集团、深圳豪鹏集团、惠州华阳电子……
+
+派出学员超过50人以上的企业:
+云南红塔集团、南车集团、北车集团、宁波经信委(宁波地区的企业家)、金华经信委、伊利集
+团、欧派集团、华润集团、丹姿集团、自生电力、中国移动(广东)、齐心文具、中粮集团……
+
+派出学员超过20人以上的企业:
+蒙牛、光明、许继集团、民生银行、美涂士、嘉宝莉、普利斯通、保定烟厂、常德卷烟机械厂、
+深圳赛尔康、华美居家具、南方电力、蒂森克虏伯、格力电器、正泰集团、真功夫、伊维柯汽车
+、昭信集团、益达纺织、康捷塑胶、延锋伟世通、欧浦钢铁、浙江利欧集团、邦泽电子、温州经
+信局……
+
+派出学员超过5人以上的企业:
+中兴通讯、东风本田、上汽通用、奔驰汽车、众泰汽车、华晨宝马、杜邦、比亚迪、安利、神
+华集团、TCL、南孚电池、哈飞、西安杨森、中电集团、新明珠陶瓷、松发陶瓷、威的电子、环
+球石材、浙江新宇、深圳裕同集团、风行牛奶、三菱重工、清远先导、奥飞动漫、赛宝认证、
+大富集团、华润怡宝、理想工业、德邦物流、四川永祥、山东六和、山东康地恩、浙江科龙、
+中山林立、海斯坦普、华瑞汽车、欧普照明、世达密封、张家港浦项钢铁、洛阳轴承、大陆汽
+车、南孚电池、俊业家具、南京造币公司、恒丰泰纺织、明珠电器、迪森锅炉、上汽通用五菱
+汽车、成都京东方、浙江青莲食品、江苏丹阳食品、青岛颐和烟草、西安环球印务、日出东方
+太阳能、南海科日超声……
+
+派出1-5名学员的企业不胜枚举……
+组团学精益,已成企业常态!
+==================================================================================
+内容和行程安排
+
+第一天上午
+
+第一部分:专家授课、精益导入(宋传承老师)
+
+第一章	精益生产的本质及发展
+精益生产的起源和发展
+世界危机的根源——缺德          世界制造业生产运营管理系统的发展与变革
+精益生产的起源——丰田生产方式  世界经济的发展与精益生产的发展
+中国企业精益转型的必要性        观看影片—无止境的改善丰田生产方式
+精益生产的本质
+什么是生产运营管理系统           
+精益生产的实质——高效、简单的生产运营管理系统+精益文化体系
+TPS之屋,丰田生产方式体系
+丰田生产方式的软件核心要素   
+丰田生产方式的硬件核心要素
+理解丰田生产方式的两大支柱—JIT和自働化  
+理解丰田生产方式的改善之道—七大浪费
+
+第二章 精益生产成功的根源
+日本企业持续发展的根本原因           精益生产为什么在中国难成功的原因分析
+中国企业精益生产成功的根本因素       丰田总装现场与销售TPS体现分享与说明
+
+
+第一天下午	
+
+第二部分:标杆企业现场参观考察
+
+ 1、参观广汽丰田 (丰田21世纪海外模范工厂)
+看点:
+◆以人为本的工作环境,三位一体的品质体系;
+◆Kanban(看板)在销售→生产→采购整个流程中的运用;
+◆完全平准化混流的拉动式高柔性生产线;
+◆世界顶尖的目视化管理;
+◆先进的SPS(单台供件)物流模式。
+
+2、参观广汽丰田第一店(丰田全球超高效率经销店)
+看点:
+◆精益思想在销售、售后服务、维修中的应用体现;
+◆行业最先进的硬件设备及管理系统;
+◆全球首块销售SPM看板、售后CS看板;
+◆全国首条售后钣喷车间流水线作业方式。
+
+	
+第一天晚上	
+
+第三部分:课程及交流:丰田精益文化及案例(中国独家)(丰田在职高管)
+
+丰田为什么强大?     
+丰田生产方式(TPS)两大支柱:JIT、自働化案例详解
+丰田独特的企业文化:TOYOTA WAY(丰田之道)
+丰田会议文化             丰田安全文化                丰田“三现”文化
+丰田的人性化关怀      丰田持续改善的操作方       深度对话交流
+
+
+第二天上午
+
+第四部分:精益精髓、专家授课(宋传承老师)
+
+第三章  企业降低成本的根本原理
+企业降低成本的方法论        案例分析,冷凝器厂的成本降低方法
+降低成本与精益生产的关系    降低成本的根本原理        
+
+第四章  精益推行一二三四五
+精益生产的五大原则
+全面认识价值     分析价值流    全面理解流动   
+按客户需求拉动   持续改善
+精益生产的收益
+丰田与通用数据对比      开展精益前后各项指标对比
+
+第五章 精益生产实施要点
+工厂实例分析
+精益生产实施第一步:运用VSM画出价值流明确价值
+精益生产实施第二步:流动
+流动第1步:整流化生产
+一个流的实施方法和要点   节拍、标准化生产的要点
+流动第2步:实施基础-平准化排产
+平准化生产,精益生产计划排程方法
+案例分析:丰田的一次起死回生的经历
+案例分析:丰田的生产现场,与丰田的生产计划排程方法
+
+
+第二天下午
+
+流动第3步:做好流动的前期准备——安定化生产
+快速切换SMED               安定的设备——TPM      
+安定的品质——自働化       人才培养——多能工和改善队伍      
+合适的薪酬制度与激励机制  
+精益生产实施第三步:拉动式生产
+如何建立库存拉动、看板生产体系   
+观看影片《丰田的库存拉动》理解库存拉动模式   
+案例分享:丰田的看板运用         
+实施JIT的要点
+刚好及时的物流方式和形态
+精益生产实施第四步:实现到供应商拉动
+精益生产实施第五步:精益供应链四原则
+案例分享:丰田纺织的快速切换改善
+通过某汽车零部件加工企业的精益生产推行的成功分享
+组建精益团队                
+建立畅流化的生产方式   
+建立标准化作业的过程        
+建立精益持续改善的管理架构   
+目视化管理水平提升          
+精益改善成果
+Q&A:学员提问及问题解答
+
+
+第二天晚上
+
+第五部分  精益精髓、专家授课(黄得华老师)
+
+第六章  TPM-如何提升设备效率
+企业生产运营-投入/产出
+生产效率化改善
+生产效率化改善的定义与目的    产效率的两大基本思路-量/质
+提高生生产效率化的改善方向-提高生产量和减少投入量的活动/提高产品品质活动
+改善项目与期待效果的对应关系
+影响生产效率的16大LOSS
+损耗定义    妨碍生产效率化的16大损失     3 16大损失(LOSS)关系和结构
+综合生产效率
+综合生产效率    人的效率   设备综合效率 材料效率     能源效率
+设备综合效率
+设备损失结构分析图          如何努力消除六大损失
+改善综合设备效率的方法   损失分析检查表
+案例研究-如何计算综合设备效率OEE
+生产效率化推进步骤
+   减少设备七大LOSS
+   提高设备综合效率
+提高劳动生产性
+实施1:油沟阀座机刀套固定方式不好-改善前/改善后
+实施2:抛光机治具通用性差-改善前/改善后
+实施3:内研磨BP面结构不完善-改善前/改善后
+制造成本低减活动推进    设备投资低减活动推进
+推进昼休无人运转           夜间无人化的推进
+案例:钎焊机燃烧气体流量控制改善项目
+
+
+第六部分  前沿精益(王圣亮老师)
+
+第六章  工业4.0下的精益体系构建
+1、什么是工业4.0
+2、精益生产的十大招数
+4、工业4.0与精益生产的关系
+5、工业4.0下的精益体系构建的5大要点
+6、案例分析、讨论
+
+
+第三天全天
+
+第七部分:学员企业现场诊断(宋传承、黄得华老师)
+
+A.方案学员企业(NO1.0NO2.3NO3.5竞标)诊断:
+(无需费用,有意向企业请提前与我们联系)
+1、集体坐大巴去学员企业      
+2、学员企业整体介绍
+3、老师讲解诊断流程          
+4、在老师带领下到企业现场参观诊断
+5、学员讨论交流、改善方案发表              
+6、老师总结陈述,并做出诊断意见及结果
+B. 方案(学员企业准备不充分时)案例深度交流:
+  1、个案汇集与描述;     2、深度交流与研讨。
+===================================================================================
+导师介绍:老师介绍:
+(一)宋传承	
+精益管理高级研究员;
+首席精益管理专家;
+中国少壮派精益生产实战专家;
+华南理工大学实践教学导师。
+
+就业背景:
+曾任职广汽集团乘用车(传祺汽车):
+参与新工厂规划,layout设计,物流规划负责人,进行工厂规划,并研究各大汽车厂生产方式
+及物流模式;
+精益物流规划、仓库布局设计负责人,结合生产方式建立面积最优化、最高效的布局,物流面
+积比其他相同产能汽车厂低减50%;
+AGV无人搬运系统导入负责人,SPS物流方式建立导入,建立部分线的SPS物流方式,提搞生产效
+率15%,线边面积低减30%,目视化及管理水平提升;
+物流流程体系及标准作业体系负责人,建立作业标准体系,比其他相同产能汽车厂物流成本低
+30%;
+曾任丰田电装TPS主任:创造了电装公司历史上的精益改善奇迹。负责电装公司及供应商丰田生
+产方式(TPS)的推行,看板拉动式生产方式的构建,省人化项目推进,工场工数管理体制建立及
+推进,生产、生管每月需求人员计划的监控及调整;L/T短缩活动推进,仓库物流布局及改善活
+动推进,EF(效率工厂)活动五年规划与推行。
+
+
+(二)黄得华
+精益管理高级研究员;
+首席设备管理专家;
+HTPM系统理论创立者/节能降耗 资深专家;
+精益生产项目专家、高级培训师、TTT授证培训师;
+
+就业背景:
+曾任职世界知名制造企业-松下电器14年,并赴日本松下总部学习企业生产革新,主推设备TPM
+革新,在现场设备管理实务和培训工作中获得丰富的经验并屡创佳绩;
+拥有十多年著名外资企业生产、技术、保全中高层管理经验。其开发的《节能降耗》课程,为目
+前中国精益咨询与培训界畅销课程。其丰富的项目案例及实操方法,为企业节能降耗提供了思路
+与方向;
+8年TPM设备保全咨询服务经验,亲自辅导过企业设备TPM活动、改良改善课题超过50个,受到企
+业各层次人员的广泛认可和敬重!长期从事自动化设备管理、国产化备品推进工作;熟悉设备的
+控制原理、结构功能、设备维修保养过程中稳定性操作技巧;以及防止再发故障、判定方法和提
+升生产效率方法。同时对不同设备的维护所产生的损失成本管理,具有独特、实效的手法和实践
+经验;
+建立了系统的专业知识体系和管理方法论体系,能熟练运用工业工程、价值工程、统计技术和现
+场改善手法能快速有效地分析和解决问题,理性、系统、专业又极具创造性思维,深受客户和专
+业人士好评。
+
+
+(三)王圣亮
+智慧工厂设计中心主任
+首席精益信息化专家 智慧工厂系统架构师 
+香港国际商学院客座教授
+原广东达美新材料公司董事副总经理兼战略顾问
+原兴达货架有限公司总经理
+
+就业背景:
+王老师拥有十年制造业工作经验,七年精益生产咨询及工厂信息化经验。曾师从日本精益大师,
+连续五年跟随,系统学习精益生产现场咨询辅导,并多次赴日专项进修TPS。首度提出工业4.0的
+精益信息化解决方案:C4TA工业动态管理系统,震惊业内,引领行业发展;
+为中车集团(原南车、北车)、海尔、美的、三菱重工等数十家500强企业做精益信息化系统设计
+及实施。
+====================================================================================
+【研修费用】:人民币6880元/人,费用包含:培训费、组织费、交流座谈、资料费、餐费。往
+              返交通及住宿费自理。
+【上课地点】:广州天河区天河路603号 莱福.广武酒店(地铁三号线天河岗顶站A出口)
+              如需我方代订住房,请提前告知.标准双人间358元/晚(广交期间除外)
+【培训证书】:报到时请提交大一寸彩色照片2张,课程结束后颁发学习证书
+====================================================================================
+您可信赖的合作伙伴:
+------------------------------------------
+励源企业顾问有限公司
+
+华东地区专线:021-5109,9475
+广东地区专线:020-3998,2321
+QQ互动:1925139040
+

File diff suppressed because it is too large
+ 0 - 0
test/unit/email_parser_test.rb


+ 19 - 1
test/unit/email_process_test.rb

@@ -1997,6 +1997,24 @@ Some Text',
           },
         },
       },
+      {
+        data: IO.binread('test/fixtures/mail43.box'),
+        success: true,
+        result: {
+          0 => {
+            priority: '2 normal',
+            title: 'Kontakte',
+          },
+          1 => {
+            sender: 'Customer',
+            type: 'email',
+          },
+        },
+      },
+      {
+        data: IO.binread('test/fixtures/mail44.box'),
+        success: false,
+      },
     ]
     process(files)
   end
@@ -2158,7 +2176,7 @@ Some Text',
 
   def process(files)
     files.each { |file|
-      result = Channel::EmailParser.new.process(file[:channel]||{}, file[:data])
+      result = Channel::EmailParser.new.process(file[:channel]||{}, file[:data], false)
       if file[:success]
         if result && result.class == Array && result[1]
           assert( true )

Some files were not shown because too many files changed in this diff