เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏ เดเดคเตเดฐเดฎเดพเดคเตเดฐเด เดตเดฟเดเดธเดฟเดเตเดเดพเดฒเตเด, เดเดพเดฒเดนเดฐเดฃเดชเตเดชเตเดเตเด เดธเดฎเตเดชเดจเดเตเดเดณเตเดเต เดเดฐเต เดจเดฟเดฐ เดเดชเตเดชเตเดดเตเด เดตเดฟเดเดธเดจเดคเตเดคเดฟเดจเต เดชเดฟเดจเตเดจเดฟเดฒเดพเดฃเต. เดเดคเต เดธเตเดเดฎเดฎเดพเดฏ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด, เดฎเดพเดจเตเดทเดฟเด เดเดเดเดเตเดเตพ, เดธเดพเดเตเดเตเดคเดฟเด เดเดตเดถเตเดฏเดเตเดเตพ เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดฎเดฑเตเดฑเตเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดเดพเดฐเดฃเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเดพเด. เดกเดพเดฑเตเดฑ เดชเตเดฐเตเดธเดธเตเดธเดฟเดเดเต เดฎเตเดเดฒเดฏเดฟเตฝ, เด เดญเดพเดเดคเตเดคเต เดเดฑเตเดฑเดตเตเด เดเตเดเตเดคเตฝ เดตเตเดณเดฟเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเดคเต เดกเดพเดฑเตเดฑ เดเดฑเดตเดฟเดเดเตเดเดณเดพเดฃเต. เดเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดฐเดเตเดทเดชเตเดชเตเดเดพเตป เดเดเตเดเตพ เดเดคเตเดฐเดฎเดพเดคเตเดฐเด เดธเตเดตเดชเตเดจเด เดเดพเดฃเตเดจเตเดจเตเดตเตเดเตเดเดฟเดฒเตเด, เดเดคเตเดตเดฐเต เดกเดพเดฑเตเดฑเดฏเตเดเต เดเดฐเต เดญเดพเดเด เดคเตฝเดเตเดทเดฃ เดธเดจเตเดฆเตเดถเดตเดพเดนเดเดฐเดฟเดฒเตเด เดเดฎเตเดฏเดฟเดฒเตเดเดณเดฟเดฒเตเด เด เดฏเดเตเดเดฟเดเตเดเตเดฃเตเดเต, เดเตเดเตเดคเตฝ เดชเตเดฐเดพเดคเดจ เดซเตเตผเดฎเดพเดฑเตเดฑเตเดเตพ เดชเดฐเดพเดฎเตผเดถเดฟเดเตเดเตเดฃเตเดเดคเดฟเดฒเตเดฒ. เด เดชเตเดชเดพเดเตเดเต เดเดฏเตผเดซเตเดฒเตเดฏเตโเดเตเดเตเดณเตเดณ เดเดชเตเดทเดจเตเดเดณเดฟเดฒเตเดจเตเดจเต เดกเดฟเดธเตเด เดธเดเดฌเตเดฒเดฟเดเดเต เดเตเดฏเตเดฏเดพเตป เดเดพเตป เดจเดฟเดเตเดเดณเต เดเตเดทเดฃเดฟเดเตเดเตเดจเตเดจเต, เดเดฎเตเดฏเดฟเดฒเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดเตเดเดจเต เดกเดพเดฑเตเดฑ เดเดเตเดเตเดเดพเด เดเดจเตเดจเต เดเดฟเดคเตเดฐเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต.
เดเดฐเดฟเดคเตเดฐเดพเดคเตเดคเดเดพเดฒเด
เดตเตเดฏเดเตเดคเดฟเดเตพ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดเดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด เดฎเตเดคเตฝ เดเดฎเตเดชเดจเดฟเดเตพ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดเดถเดฏเดตเดฟเดจเดฟเดฎเดฏเดคเตเดคเดฟเดจเตเดฑเต เดฎเดพเดจเดฆเดฃเตเดกเดเตเดเตพ เดตเดฐเต เด-เดฎเตเดฏเดฟเตฝ เดตเดดเดฟ เดงเดพเดฐเดพเดณเด เดกเดพเดฑเตเดฑ เดเดชเตเดชเตเดดเตเด เดเตเดฎเดพเดฑเตเดฑเด เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดจเตเดจเต. เดกเดพเดฑเตเดฑ เดจเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดฐเต เดเดจเตเดฑเตผเดซเตเดธเต เดเดดเตเดคเตเดเดฏเต เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เด เดตเดฟเดตเดฐเดเตเดเตพ เดเตเดเตเดคเตฝ เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เดเดฑเดตเดฟเดเดเตเดเดณเดฟเดฒเตเดเตเดเต เดจเตฝเดเตเดจเตเดจ เดเดณเตเดเดณเต เดเดซเตเดธเดฟเตฝ เดเตพเดชเตเดชเตเดเตเดคเตเดคเตเดเดฏเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดจเดฒเตเดฒเดคเดพเดฃเต, เดชเดเตเดทเต เดชเดฒเดชเตเดชเตเดดเตเด เดเดคเต เดธเดพเดงเตเดฏเดฎเดพเดฏเตเดเตเดเดฟเดฒเตเดฒ. เดเตเดชเตเดฐเดธเดฟเดฆเตเดงเดฎเดพเดฏ CRM เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเต เดกเดพเดฑเตเดฑ เดตเตเดฏเตผเดนเตเดธเดฟเดฒเตเดเตเดเตเด เดคเตเดเตผเดจเตเดจเต OLAP เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเตเดเตเดเตเด เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฏเดฟเดฐเตเดจเตเดจเต เดเดพเตป เดจเตเดฐเดฟเดเตเด เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดเตเดฎเดคเดฒ. เดเดฐเดฟเดคเตเดฐเดชเดฐเดฎเดพเดฏเดฟ เด เดเตเดเดจเต เดธเดเดญเดตเดฟเดเตเดเต, เดเดเตเดเดณเตเดเต เดเดฎเตเดชเดจเดฟเดเตเดเต เด เดธเดเดตเดฟเดงเดพเดจเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดฌเดฟเดธเดฟเดจเดธเต เดฎเตเดเดฒเดฏเดฟเตฝ เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต. เด เดคเดฟเดจเดพเตฝ, เด เดฎเตเดจเตเดจเดพเด เดเดเตเดทเดฟ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑเดฏเตเด เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดเดฒเตเดฒเดพเดตเดฐเตเด เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต. เดเดจเตเดจเดพเดฎเดคเดพเดฏเดฟ, เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดเดฐเต เดเดชเตเดชเตบ เดเดชเดฟเดเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดจเตเดเดพเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดค เดชเด เดฟเดเตเดเต. เดจเดฟเตผเดญเดพเดเตเดฏเดตเดถเดพเตฝ, เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดฒเตเดฒเดพ เดกเดพเดฑเตเดฑเดฏเตเด เดฒเดญเดฟเดเตเดเตเดจเตเดจเดคเต API เดเดตเตผ เดเตเดฏเตเดคเดฟเดฒเตเดฒ, เดเตเดเดพเดคเต เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดชเดฑเดเตเดเดพเตฝ, เด เดคเต เดชเดฒ เดคเดฐเดคเตเดคเดฟเตฝ เดตเดณเดเตเดเตเดเดฟเดเตเดเดชเตเดชเตเดเตเดเต, เดเตเดเดพเดคเต เดเตเดเตเดคเตฝ เดธเดฎเดเตเดฐเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเต เดธเดพเดเตเดเตเดคเดฟเด เดชเดฟเดจเตเดคเตเดฃ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดชเดพเดคเดฟเดตเดดเดฟเดฏเดฟเตฝ เดจเดฟเดฑเดตเตเดฑเตเดฑเดพเตป เดเดดเดฟเดเตเดเดฟเดฒเตเดฒ. เดเดจเตเดจเดพเตฝ เด เดธเดฟเดธเตเดฑเตเดฑเด เดเตผเดเตเดเตเดตเต เด เตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดฒเดฟเดเตเดเต เดฐเตเดชเดคเตเดคเดฟเตฝ เดเดเดฏเตเดเตเดเดฟเดเต เดจเดทเตเดเดชเตเดชเตเดเตเด เดกเดพเดฑเตเดฑ เดฎเตเดฏเดฟเตฝ เดตเดดเดฟ เดธเตเดตเตเดเดฐเดฟเดเตเดเดพเตป เด เดตเดธเดฐเด เดจเตฝเดเดฟ.
เดเดฎเตเดฏเดฟเดฒเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดคเตฝเดเตเดทเดฃ เดธเดจเตเดฆเตเดถเดตเดพเดนเดเดฐเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดถเตเดเดฐเดฟเดเตเดเดพเตป เดฌเดฟเดธเดฟเดจเดธเตเดธเต เดเดเตเดฐเดนเดฟเดเตเด เดเดฐเตเดฏเตเดฐเต เดธเดพเดนเดเดฐเตเดฏเด เดเดคเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดฒเตเดฒ เดเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดฃเตเดเดคเดพเดฃเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด เดฐเตเดคเดฟเดฏเดฟเตฝ เดฎเดพเดคเตเดฐเด เดกเดพเดฑเตเดฑเดฏเตเดเต เดเดฐเต เดญเดพเดเด เดจเตฝเดเตเดจเตเดจ เดเดฐเต เดฎเตเดจเตเดจเดพเด เดเดเตเดทเดฟ เดเดฎเตเดชเดจเดฟเดฏเต เดธเตเดตเดพเดงเตเดจเดฟเดเตเดเดพเตป เดเดเตเดเตพเดเตเดเต เดเดดเดฟเดเตเดเดฟเดฒเตเดฒ.
เด เดชเตเดชเดพเดเตเดเต เดเดฏเตผเดซเตเดฒเต
ETL เดชเตเดฐเดเตเดฐเดฟเดฏเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดเดเตเดเตพ เดฎเดฟเดเตเดเดชเตเดชเตเดดเตเด Apache Airflow เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต. เด เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏเดฏเตเดเตเดเตเดฑเดฟเดเตเดเต เดชเดฐเดฟเดเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดตเดพเดฏเดจเดเตเดเดพเดฐเดจเต เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเดฒเตเด เดชเตเดคเตเดตเตเดฏเตเด เดเดคเต เดเดเตเดเดจเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดจเดจเตเดจเดพเดฏเดฟ เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดเดพเตป เดฐเดฃเตเดเต เดเดฎเตเดเดเตเดเตพ เดตเดฟเดตเดฐเดฟเดเตเดเตเด.
เดชเตเดคเตเดคเดฃเดฟเดฒเต ETL (เดเดเตโเดธเตโเดเตเดฐเดพเดเตเดฑเตเดฑเต-เดเตเดฐเดพเตปเดธเตโเดซเตเด-เดฒเตเดกเดฟเดเดเต) เดชเตเดฐเดเตเดฐเดฟเดฏเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดจเดฟเดฐเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดธเตเดตเดคเดจเตเดคเตเดฐ เดชเตเดฒเดพเดฑเตเดฑเตโเดซเตเดฎเดพเดฃเต เด เดชเตเดชเดพเดเตเดเต เดเดฏเตผเดซเตเดฒเต. เดเดฏเตผเดซเตเดฒเตเดฏเดฟเดฒเต เดชเตเดฐเดงเดพเดจ เดเดถเดฏเด เดเดฐเต เดกเดฏเดฑเดเตเดฑเตเดฑเต เด เดธเตเดเตเดฒเดฟเดเต เดเตเดฐเดพเดซเดพเดฃเต, เด เดตเดฟเดเต เดเตเดฐเดพเดซเดฟเดจเตเดฑเต เดฒเดเดฌเดเตเดเตพ เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดชเตเดฐเดเตเดฐเดฟเดฏเดเดณเดพเดฃเต, เดเตเดเดพเดคเต เดเตเดฐเดพเดซเดฟเดจเตเดฑเต เด เดฐเดฟเดเตเดเตพ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดคเตเดคเดฟเดจเตเดฑเตเดฏเต เดตเดฟเดตเดฐเดคเตเดคเดฟเดจเตเดฑเตเดฏเต เดเดดเตเดเตเดเดพเดฃเต. เดเดฐเต เดชเตเดฐเตเดธเดธเตเดธเดฟเดจเต เดเดคเตเดเตเดเดฟเดฒเตเด เดชเตเดคเตเดคเตบ เดซเดเดเตโเดทเดจเต เดตเดฟเดณเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด, เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฐเต เดเตเดฒเดพเดธเดฟเดจเตเดฑเต เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเตฝ เดจเดฟเดฐเดตเดงเดฟ เดซเดเดเตโเดทเดจเตเดเดณเต เดคเตเดเตผเดเตเดเดฏเดพเดฏเดฟ เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดคเดฟเดจเต เดเตเดเตเดคเตฝ เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดฏ เดฏเตเดเตเดคเดฟ เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเดพเด. เดเดฑเตเดฑเดตเตเด เดชเดคเดฟเดตเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพเดเตเดเดพเดฏเดฟ, เดชเตเดฐเดเตเดฐเดฟเดฏเดเดณเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเดพเดตเตเดจเตเดจ เดจเดฟเดฐเดตเดงเดฟ เดฑเตเดกเดฟเดฎเตเดฏเตเดกเต เดธเดเดญเดตเดตเดฟเดเดพเดธเดเตเดเตพ เดเดคเดฟเดจเดเด เดเดฃเตเดเต. เด เดคเตเดคเดฐเด เดธเดเดญเดตเดตเดฟเดเดพเดธเดเตเดเดณเดฟเตฝ เดเดต เดเตพเดชเตเดชเตเดเตเดจเตเดจเต:
- เดเดชเตเดชเดฑเตเดฑเตเดฑเตผเดฎเดพเตผ - เดเดฐเต เดธเตเดฅเดฒเดคเตเดคเต เดจเดฟเดจเตเดจเต เดฎเดฑเตเดฑเตเดฐเดฟเดเดคเตเดคเตเดเตเดเต เดกเดพเดฑเตเดฑ เดเตเดฎเดพเดฑเตเดจเตเดจเดคเดฟเดจเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดฐเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดชเดเตเดเดฟเดเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเต เดกเดพเดฑเตเดฑ เดตเตเดฏเตผเดนเตเดธเดฟเดฒเตเดเตเดเต;
- เดธเตเตปเดธเดฑเตเดเตพ - เดเดฐเต เดจเดฟเดถเตเดเดฟเดค เดธเดเดญเดตเดคเตเดคเดฟเดจเตเดฑเต เดธเดเดญเดตเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดเตเดฐเดพเดซเดฟเดจเตเดฑเต เดคเตเดเตผเดจเตเดจเตเดณเตเดณ เดฒเดเดฌเดเตเดเดณเดฟเดฒเตเดเตเดเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต เดเดดเตเดเตเดเต เดจเดฏเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด;
- เดเตเดณเตเดคเตเดคเตเดเตพ - เดคเดพเดดเตเดจเตเดจ เดจเดฟเดฒเดฏเดฟเดฒเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพเดเตเดเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดฐเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดชเดเตเดเดฟเดเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดฒเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต (เดชเตเดฐเดธเตเดคเดพเดตเดจเดเดณเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต);
- เด เดคเตเดชเตเดฒเต.
เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ เด
เดชเตเดชเดพเดเตเดเต เดเดฏเตผเดซเตเดฒเต เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเดเตเดเตเดจเตเดจเดคเต เด
เดจเตเดเดฟเดคเดฎเดพเดฃเต. เดนเตเดฐเดธเตเดตเดฎเดพเดฏ เดเดฎเตเดเดเตเดเตพ เดเดพเดฃเดพเด
เดกเดพเดฑเตเดฑ เดฒเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดนเตเดเตเดเต
เดเดจเตเดจเดพเดฎเดคเดพเดฏเดฟ, เดชเตเดฐเดถเตเดจเด เดชเดฐเดฟเดนเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดจเดฎเตเดเตเดเต เดเดดเดฟเดฏเตเดจเตเดจ เดเดฐเต เดนเตเดเตเดเต เดเดดเตเดคเตเดฃเตเดเดคเตเดฃเตเดเต:
- เดเดฎเตเดฏเดฟเดฒเดฟเดฒเตเดเตเดเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเด
- เดถเดฐเดฟเดฏเดพเดฏ เด เดเตเดทเดฐเด เดเดฃเตเดเตเดคเตเดคเตเด
- เดเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดธเตเดตเตเดเดฐเดฟเดเตเดเตเด.
from airflow.hooks.base_hook import BaseHook
import imaplib
import logging
class IMAPHook(BaseHook):
def __init__(self, imap_conn_id):
"""
IMAP hook ะดะปั ะฟะพะปััะตะฝะธั ะดะฐะฝะฝัั
ั ัะปะตะบััะพะฝะฝะพะน ะฟะพััั
:param imap_conn_id: ะะดะตะฝัะธัะธะบะฐัะพั ะฟะพะดะบะปััะตะฝะธั ะบ ะฟะพััะต
:type imap_conn_id: string
"""
self.connection = self.get_connection(imap_conn_id)
self.mail = None
def authenticate(self):
"""
ะะพะดะบะปััะฐะตะผัั ะบ ะฟะพััะต
"""
mail = imaplib.IMAP4_SSL(self.connection.host)
response, detail = mail.login(user=self.connection.login, password=self.connection.password)
if response != "OK":
raise AirflowException("Sign in failed")
else:
self.mail = mail
def get_last_mail(self, check_seen=True, box="INBOX", condition="(UNSEEN)"):
"""
ะะตัะพะด ะดะปั ะฟะพะปััะตะฝะธั ะธะดะตะฝัะธัะธะบะฐัะพัะฐ ะฟะพัะปะตะดะฝะตะณะพ ะฟะธััะผะฐ,
ัะดะพะฒะปะตัะฒะพัะฐัััะตะณะพ ััะปะพะฒะธัะผ ะฟะพะธัะบะฐ
:param check_seen: ะัะผะตัะฐัั ะฟะพัะปะตะดะฝะตะต ะฟะธััะผะพ ะบะฐะบ ะฟัะพัะธัะฐะฝะฝะพะต
:type check_seen: bool
:param box: ะะฐะธะผะตะฝะพะฒะฐะฝะธั ััะธะบะฐ
:type box: string
:param condition: ะฃัะปะพะฒะธั ะฟะพะธัะบะฐ ะฟะธัะตะผ
:type condition: string
"""
self.authenticate()
self.mail.select(mailbox=box)
response, data = self.mail.search(None, condition)
mail_ids = data[0].split()
logging.info("ะ ััะธะบะต ะฝะฐะนะดะตะฝั ัะปะตะดัััะธะต ะฟะธััะผะฐ: " + str(mail_ids))
if not mail_ids:
logging.info("ะะต ะฝะฐะนะดะตะฝะพ ะฝะพะฒัั
ะฟะธัะตะผ")
return None
mail_id = mail_ids[0]
# ะตัะปะธ ัะฐะบะธั
ะฟะธัะตะผ ะฝะตัะบะพะปัะบะพ
if len(mail_ids) > 1:
# ะพัะผะตัะฐะตะผ ะพััะฐะปัะฝัะต ะฟัะพัะธัะฐะฝะฝัะผะธ
for id in mail_ids:
self.mail.store(id, "+FLAGS", "\Seen")
# ะฒะพะทะฒัะฐัะฐะตะผ ะฟะพัะปะตะดะฝะตะต
mail_id = mail_ids[-1]
# ะฝัะถะฝะพ ะปะธ ะพัะผะตัะธัั ะฟะพัะปะตะดะฝะตะต ะฟัะพัะธัะฐะฝะฝัะผ
if not check_seen:
self.mail.store(mail_id, "-FLAGS", "\Seen")
return mail_id
เดฏเตเดเตเดคเดฟ เดเดคเดพเดฃเต: เดเดเตเดเตพ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต, เด เดตเดธเดพเดจเดคเตเดคเต เดเดฑเตเดฑเดตเตเด เดชเตเดฐเดธเดเตเดคเดฎเดพเดฏ เดเดคเตเดคเต เดเดฃเตเดเตเดคเตเดคเตเดจเตเดจเต, เดฎเดฑเตเดฑเตเดณเตเดณเดต เดเดฃเตเดเตเดเตเดเดฟเตฝ, เดเดเตเดเตพ เด เดต เด เดตเดเดฃเดฟเดเตเดเตเดจเตเดจเต. เด เดซเดเดเตเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต, เดเดพเดฐเดฃเด เดชเดฟเดจเตเดจเตเดเตเดณเตเดณ เด เดเตเดทเดฐเดเตเดเดณเดฟเตฝ เดฎเตเดฎเตเดชเดคเตเดคเต เดเดฒเตเดฒเดพ เดกเดพเดฑเตเดฑเดฏเตเด เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดคเต เด เดเตเดเดจเตเดฏเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฒเตเดฒเดพ เด เดเตเดทเดฐเดเตเดเดณเตเดเตเดฏเตเด เดเดฐเต เดถเตเดฐเตเดฃเดฟ เดคเดฟเดฐเดฟเดเต เดจเตฝเดเดพเด, เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฆเตเดฏเดคเตเดคเตเดคเต เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเดพเด, เดฌเดพเดเตเดเดฟเดฏเตเดณเตเดณเดต เด เดเตเดคเตเดค เดชเดพเดธเดฟเตฝ. เดชเตเดคเตเดตเต, เดเดฒเตเดฒเดพเด, เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดเดจเตเดจเดชเตเดฒเต, เดเตเดฎเดคเดฒเดฏเต เดเดถเตเดฐเดฏเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
เดนเตเดเตเดเดฟเดฒเตเดเตเดเต เดเดเตเดเตพ เดฐเดฃเตเดเต เดเดเตเดธเดฟเดฒเดฑเดฟ เดซเดเดเตเดทเดจเตเดเตพ เดเตเตผเดเตเดเตเดจเตเดจเต: เดเดฐเต เดซเดฏเตฝ เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด เดเดฐเต เดเดฎเตเดฏเดฟเดฒเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเต เดฒเดฟเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดซเดฏเตฝ เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด. เดตเดดเดฟเดฏเดฟเตฝ, เด เดต เดเดชเตเดชเดฑเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเต เดจเตเดเตเดเดพเตป เดเดดเดฟเดฏเตเด, เดเดคเต เด เดชเตเดฐเดตเตผเดคเตเดคเดจเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฑเต เดเดตเตเดคเตเดคเดฟเดฏเต เดเดถเตเดฐเดฏเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดนเตเดเตเดเดฟเดฒเตเดเตเดเต เดฎเดฑเตเดฑเตเดจเตเดคเดพเดฃเต เดเตเตผเดเตเดเตเดฃเตเดเดคเต, เดตเตเดฃเตเดเตเด, เดเตเดฎเดคเดฒเดฏเต เดเดถเตเดฐเดฏเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต: เดเดคเตเดคเดฟเตฝ เดซเดฏเดฒเตเดเตพ เดเดเดจเดเดฟ เดฒเดญเดฟเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเตเดคเดฟเดฒเตเดเตเดเต เด เดฑเตเดฑเดพเดเตเดเตเดฎเตเดจเตเดฑเตเดเตพ เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเดพเด, เดเดคเตเดคเดฟเตฝ เดกเดพเดฑเตเดฑ เดฒเดญเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพ เดเดคเตเดคเต เดชเดพเดดเตเดธเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต, เดคเตเดเดเตเดเดฟเดฏเดต. เดเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดคเตเดคเต เดเตผเดเตเดเตเดตเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดฐเต เดฒเดฟเดเตเดเตเดฎเดพเดฏเดพเดฃเต เดตเดฐเตเดจเตเดจเดคเต, เด เดคเต เดเดจเดฟเดเตเดเต เดเดฐเต เดจเดฟเดถเตเดเดฟเดค เดธเตเดฅเดฒเดคเตเดคเต เดเดเตเดเดฏเตเด เดเตเดเตเดคเตฝ เดชเตเดฐเตเดธเดธเตเดธเดฟเดเดเต เดชเตเดฐเดเตเดฐเดฟเดฏ เดเดฐเดเดญเดฟเดเตเดเตเดเดฏเตเด เดตเตเดฃเด.
def download_from_url(self, url, path, chunk_size=128):
"""
ะะตัะพะด ะดะปั ัะบะฐัะธะฒะฐะฝะธั ัะฐะนะปะฐ
:param url: ะะดัะตั ะทะฐะณััะทะบะธ
:type url: string
:param path: ะัะดะฐ ะฟะพะปะพะถะธัั ัะฐะนะป
:type path: string
:param chunk_size: ะะพ ัะบะพะปัะบะพ ะฑะฐะนัะพะฒ ะฟะธัะฐัั
:type chunk_size: int
"""
r = requests.get(url, stream=True)
with open(path, "wb") as fd:
for chunk in r.iter_content(chunk_size=chunk_size):
fd.write(chunk)
def download_mail_href_attachment(self, mail_id, path):
"""
ะะตัะพะด ะดะปั ัะบะฐัะธะฒะฐะฝะธั ัะฐะนะปะฐ ะฟะพ ัััะปะบะต ะธะท ะฟะธััะผะฐ
:param mail_id: ะะดะตะฝัะธัะธะบะฐัะพั ะฟะธััะผะฐ
:type mail_id: string
:param path: ะัะดะฐ ะฟะพะปะพะถะธัั ัะฐะนะป
:type path: string
"""
response, data = self.mail.fetch(mail_id, "(RFC822)")
raw_email = data[0][1]
raw_soup = raw_email.decode().replace("r", "").replace("n", "")
parse_soup = BeautifulSoup(raw_soup, "html.parser")
link_text = ""
for a in parse_soup.find_all("a", href=True, text=True):
link_text = a["href"]
self.download_from_url(link_text, path)
เดเตเดกเต เดฒเดณเดฟเดคเดฎเดพเดฃเต, เด เดคเดฟเดจเดพเตฝ เดเดคเดฟเดจเต เดเตเดเตเดคเตฝ เดตเดฟเดถเดฆเตเดเดฐเดฃเด เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ. imap_conn_id เดเดจเตเดจ เดฎเดพเดเดฟเดเต เดฒเตเดจเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดพเตป เดจเดฟเดเตเดเดณเตเดเต เดชเดฑเดฏเตเด. เดเดฐเต เดธเตเดเตเดฐเดฟเดเดเต เดเดกเดจเตเดฑเดฟเดซเดฏเตผ เดตเดดเดฟ เดเดเตโเดธเดธเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดเดฃเดเตเดทเตป เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ (เดฒเตเดเดฟเตป, เดชเดพเดธเตโเดตเตเดกเต, เดตเดฟเดฒเดพเดธเด, เดฎเดฑเตเดฑเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ) เด เดชเตเดชเดพเดเตเดเต เดเดฏเตผเดซเตเดฒเต เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจเต. เดฆเตเดถเตเดฏเดชเดฐเดฎเดพเดฏเดฟ, เดเดฃเดเตเดทเตป เดฎเดพเดจเตเดเตเดฎเตเดจเตเดฑเต เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต
เดกเดพเดฑเตเดฑเดฏเตเดเตเดเดพเดฏเดฟ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเดพเตป เดธเตเตปเดธเตผ
เดฎเตเดฏเดฟเดฒเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดเดเตเดเดจเต เดเดฃเดเตเดฑเตเดฑเตเดเตเดฏเตเดฏเดพเดฎเตเดจเตเดจเตเด เดธเตเดตเตเดเดฐเดฟเดเตเดเดพเดฎเตเดจเตเดจเตเด เดเดเตเดเตพเดเตเดเต เดเดคเดฟเดจเดเด เด เดฑเดฟเดฏเดพเดตเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เด เดตเดฏเตโเดเตเดเดพเดฏเดฟ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเดพเตป เดเดเตเดเตพเดเตเดเต เดเดชเตเดชเตเตพ เดเดฐเต เดธเตเตปเดธเตผ เดเดดเตเดคเดพเด. เดเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดกเดพเดฑเตเดฑ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจ เดเดฐเต เดเดชเตเดชเดฑเตเดฑเตเดฑเตผ เดเดเดจเดเดฟ เดเดดเตเดคเตเดจเตเดจเดคเต เดธเดพเดงเตเดฏเดฎเดฒเตเดฒ, เดเดพเดฐเดฃเด เดฎเตเดฏเดฟเดฒเดฟเตฝ เดจเดฟเดจเตเดจเต เดฒเดญเดฟเดเตเด เดกเดพเดฑเตเดฑเดฏเต เด เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟ เดฎเดฑเตเดฑเต เดชเตเดฐเตเดธเดธเตเดธเตเดเดณเตเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต, เดฎเดฑเตเดฑเต เดเดฑเดตเดฟเดเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดฌเดจเตเดงเดชเตเดชเตเดเตเด เดกเดพเดฑเตเดฑ เดเดเตเดเตเดเตเดจเตเดจเดต เดเตพเดชเตเดชเตเดเต (API, เดเตเดฒเดฟเดซเตเดฃเดฟ, เดตเตเดฌเต เดฎเตเดเตเดฐเดฟเดเตเดธเต, เดฎเตเดคเดฒเดพเดฏเดต) เดฎเตเดคเดฒเดพเดฏเดต). เดเดพเตป เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดเดฆเดพเดนเดฐเดฃเด เดคเดฐเดพเด. CRM เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดเดฐเต เดชเตเดคเดฟเดฏ เดเดชเดฏเตเดเตเดคเดพเดตเต เดชเตเดฐเดคเตเดฏเดเตเดทเดชเตเดชเตเดเตเดเต, เด เดฆเตเดฆเตเดนเดคเตเดคเดฟเดจเตเดฑเต UUID-เดฏเต เดเตเดฑเดฟเดเตเดเต เดเดเตเดเตพเดเตเดเต เดเดชเตเดชเตเดดเตเด เด เดฑเดฟเดฏเดฟเดฒเตเดฒ. เดคเตเดเตผเดจเตเดจเต, เดเดธเตโเดโเดชเดฟ เดเตเดฒเดฟเดซเตเดฃเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดธเตเดตเตเดเดฐเดฟเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดฎเตเดชเตเตพ, เด เดคเดฟเดจเตเดฑเต เดฏเตเดฏเตเดเดกเดฟเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเด เดเตเดณเตเดเตพ เดเดเตเดเตพเดเตเดเต เดฒเดญเดฟเดเตเดเตเด, เดชเดเตเดทเต เด เดต เดธเดเดฐเดเตเดทเดฟเดเตเดเดพเดจเตเด เดถเดฐเดฟเดฏเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเดพเดจเตเด เดเดเตเดเตพเดเตเดเต เดเดดเดฟเดฏเดฟเดฒเตเดฒ. เด เดคเตเดคเดฐเด เดเดพเดฐเตเดฏเดเตเดเดณเดฟเตฝ, เดกเดพเดฑเตเดฑเดฏเตเดเต เดเดถเตเดฐเดฟเดคเดคเตเดตเด เดฎเดจเดธเตเดธเดฟเตฝ เดธเตเดเตเดทเดฟเดเตเดเตเดฃเตเดเดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต, เดชเตเดฐเดคเตเดฏเตเดเดฟเดเตเดเตเด เด เดต เดตเตเดฏเดคเตเดฏเดธเตเดค เดเดฑเดตเดฟเดเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณเดคเดพเดฃเตเดเตเดเดฟเตฝ. เดเดต เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดกเดพเดฑเตเดฑเดฏเตเดเต เดธเดฎเดเตเดฐเดค เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด เดชเดฐเตเดฏเดพเดชเตเดคเดฎเดพเดฏ เดจเดเดชเดเดฟเดเดณเดพเดฃเต, เดเดจเตเดจเดพเตฝ เดเดฟเดฒ เดธเดจเตเดฆเตผเดญเดเตเดเดณเดฟเตฝ เด เดต เดเดตเดถเตเดฏเดฎเดพเดฃเต. เด เดคเต, เดตเดฟเดญเดตเดเตเดเตพ เดเตเดตเดถเดชเตเดชเตเดเตเดคเตเดคเดพเดจเตเดณเตเดณ เดจเดฟเดทเตเดเตเดฐเดฟเดฏเดคเตเดตเดตเตเด เดฏเตเดเตเดคเดฟเดฐเดนเดฟเดคเดฎเดพเดฃเต.
เด เดคเดฟเดจเดพเตฝ, เดฎเตเดฏเดฟเดฒเดฟเตฝ เดชเตเดคเดฟเดฏ เดตเดฟเดตเดฐเดเตเดเตพ เดเดฃเตเดเตเดเตเดเดฟเตฝ เดเดเตเดเดณเตเดเต เดธเตเตปเดธเตผ เดเตเดฐเดพเดซเดฟเดจเตเดฑเต เดคเตเดเตผเดจเตเดจเตเดณเตเดณ เดฒเดเดฌเดเตเดเตพ เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเด, เดเตเดเดพเดคเต เดฎเตเดฎเตเดชเดคเตเดคเต เดตเดฟเดตเดฐเดเตเดเตพ เด เดชเตเดฐเดธเดเตเดคเดฎเดพเดฏเดฟ เด เดเดฏเดพเดณเดชเตเดชเตเดเตเดคเตเดคเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด.
from airflow.sensors.base_sensor_operator import BaseSensorOperator
from airflow.utils.decorators import apply_defaults
from my_plugin.hooks.imap_hook import IMAPHook
class MailSensor(BaseSensorOperator):
@apply_defaults
def __init__(self, conn_id, check_seen=True, box="Inbox", condition="(UNSEEN)", *args, **kwargs):
super().__init__(*args, **kwargs)
self.conn_id = conn_id
self.check_seen = check_seen
self.box = box
self.condition = condition
def poke(self, context):
conn = IMAPHook(self.conn_id)
mail_id = conn.get_last_mail(check_seen=self.check_seen, box=self.box, condition=self.condition)
if mail_id is None:
return False
else:
return True
เดเดเตเดเตพ เดกเดพเดฑเตเดฑ เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดเดฏเตเด เดเดชเดฏเตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต
เดกเดพเดฑเตเดฑ เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดเดชเตเดชเดฑเตเดฑเตเดฑเตผ เดเดดเตเดคเดพเด, เดจเดฟเดเตเดเตพเดเตเดเต เดฑเตเดกเดฟเดฎเตเดฏเตเดกเต เดเดชเดฏเตเดเดฟเดเตเดเดพเด. เดเดคเตเดตเดฐเต เดฒเตเดเดฟเดเต เดจเดฟเดธเตเดธเดพเดฐเดฎเดพเดฏเดคเดฟเดจเดพเตฝ - เด เดเตเดทเดฐเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดเดเตเดเตเดเดพเตป, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดพเตป เดธเตเดฑเตเดฑเดพเตปเดกเตเตผเดกเต เดชเตเดคเตเดคเตบ เดเดชเตเดชเดฑเตเดฑเตเดฑเตผ เดจเดฟเตผเดฆเตเดฆเตเดถเดฟเดเตเดเตเดจเตเดจเต
from airflow.models import DAG
from airflow.operators.python_operator import PythonOperator
from airflow.sensors.my_plugin import MailSensor
from my_plugin.hooks.imap_hook import IMAPHook
start_date = datetime(2020, 4, 4)
# ะกัะฐะฝะดะฐััะฝะพะต ะบะพะฝัะธะณััะธัะพะฒะฐะฝะธะต ะณัะฐัะฐ
args = {
"owner": "example",
"start_date": start_date,
"email": ["[email protected]"],
"email_on_failure": False,
"email_on_retry": False,
"retry_delay": timedelta(minutes=15),
"provide_context": False,
}
dag = DAG(
dag_id="test_etl",
default_args=args,
schedule_interval="@hourly",
)
# ะะฟัะตะดะตะปัะตะผ ัะตะฝัะพั
mail_check_sensor = MailSensor(
task_id="check_new_emails",
poke_interval=10,
conn_id="mail_conn_id",
timeout=10,
soft_fail=True,
box="my_box",
dag=dag,
mode="poke",
)
# ะคัะฝะบัะธั ะดะปั ะฟะพะปััะตะฝะธั ะดะฐะฝะฝัั
ะธะท ะฟะธััะผะฐ
def prepare_mail():
imap_hook = IMAPHook("mail_conn_id")
mail_id = imap_hook.get_last_mail(check_seen=True, box="my_box")
if mail_id is None:
raise AirflowException("Empty mailbox")
conn.download_mail_href_attachment(mail_id, "./path.zip")
prepare_mail_data = PythonOperator(task_id="prepare_mail_data", default_args=args, dag=dag, python_callable= prepare_mail)
# ะะฟะธัะฐะฝะธะต ะพััะฐะปัะฝัั
ะฒะตััะธะฝ ะณัะฐัะฐ
...
# ะะฐะดะฐะตะผ ัะฒัะทั ะฝะฐ ะณัะฐัะต
mail_check_sensor >> prepare_mail_data
prepare_data >> ...
# ะะฟะธัะฐะฝะธะต ะพััะฐะปัะฝัั
ะฟะพัะพะบะพะฒ ัะฟัะฐะฒะปะตะฝะธั
เดตเดดเดฟเดฏเดฟเตฝ, เดจเดฟเดเตเดเดณเตเดเต เดเตเตผเดชเตเดชเดฑเตเดฑเตเดฑเต เดฎเตเดฏเดฟเตฝ mail.ru-เตฝ เดเดฃเตเดเตเดเดฟเตฝ, เดตเดฟเดทเดฏเด, เด เดฏเดเตเดเดฏเดพเตพ เดฎเตเดคเดฒเดพเดฏเดต เดชเตเดฐเดเดพเดฐเด เดจเดฟเดเตเดเตพเดเตเดเต เด เดเตเดทเดฐเดเตเดเตพ เดคเดฟเดฐเดฏเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ. 2016 เตฝ, เด เดตเตผ เด เดคเต เด เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดตเดพเดเตเดฆเดพเดจเด เดเตเดฏเตเดคเต, เดชเดเตเดทเต เดชเตเดฐเดคเตเดฏเดเตเดทเดคเตเดคเดฟเตฝ เด เดตเดฐเตเดเต เดฎเดจเดธเตเดธเต เดฎเดพเดฑเตเดฑเดฟ. เดเดตเดถเตเดฏเดฎเดพเดฏ เด เดเตเดทเดฐเดเตเดเตพเดเตเดเดพเดฏเดฟ เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดซเตเตพเดกเตผ เดธเตเดทเตเดเดฟเดเตเดเต เดฎเตเดฏเดฟเตฝ เดตเตเดฌเต เดเดจเตเดฑเตผเดซเตเดธเดฟเตฝ เดเดตเดถเตเดฏเดฎเดพเดฏ เด เดเตเดทเดฐเดเตเดเตพเดเตเดเดพเดฏเดฟ เดเดฐเต เดซเดฟเตฝเดเตเดเตผ เดธเดเตเดเตเดเดฐเดฟเดเตเดเต เดเดพเตป เด เดชเตเดฐเดถเตเดจเด เดชเดฐเดฟเดนเดฐเดฟเดเตเดเต. เด เดคเดฟเดจเดพเตฝ, เดคเดฟเดฐเดฏเดฒเดฟเดจเต เดเดตเดถเตเดฏเดฎเดพเดฏ เด เดเตเดทเดฐเดเตเดเดณเตเด เดตเตเดฏเดตเดธเตเดฅเดเดณเตเด เดฎเดพเดคเตเดฐเด, เดเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, (UNSEEN) เด เดซเตเตพเดกเดฑเดฟเดฒเตเดเตเดเต เดชเตเดฐเดตเตเดถเดฟเดเตเดเตเด.
เดเตเดฐเตเดเตเดเดคเตเดคเดฟเตฝ, เดเดเตเดเตพเดเตเดเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเตเดฐเดฎเด เดเดฃเตเดเต: เดตเตเดฏเดตเดธเตเดฅเดเตพ เดชเดพเดฒเดฟเดเตเดเตเดจเตเดจ เดชเตเดคเดฟเดฏ เด
เดเตเดทเดฐเดเตเดเตพ เดเดฃเตเดเต เดเดจเตเดจเต เดเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต, เดเดฃเตเดเตเดเตเดเดฟเตฝ, เด
เดตเดธเดพเดจ เด
เดเตเดทเดฐเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฒเดฟเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดเตเดเตพ เดเตผเดเตเดเตเดตเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต.
เด
เดตเดธเดพเดจ เดกเตเดเตเดเตเดเตพเดเตเดเต เดเตเดดเดฟเตฝ, เด เดเตผเดเตเดเตเดตเต เด
เตบเดชเดพเดเตเดเต เดเตเดฏเตเดฏเดชเตเดชเตเดเตเด, เดเตผเดเตเดเตเดตเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดฎเดพเดฏเตโเดเตเดเตเดเดฏเตเด เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด, เด
เดคเดฟเดจเตเดฑเต เดซเดฒเดฎเดพเดฏเดฟ, เดฎเตเดดเตเดตเตป เดเดพเดฐเตเดฏเดเตเดเดณเตเด ETL เดชเตเดฐเตเดธเดธเตเดธเดฟเดจเตเดฑเต เดชเตเดชเตเดชเตโเดฒเตเดจเดฟเดฒเตเดเตเดเต เดชเตเดเตเด, โโเดชเดเตเดทเต เดเดคเต เดเดคเดฟเดจเดเด เดคเดจเตเดจเต เด
เดชเตเดชเตเดฑเดฎเดพเดฃเต เดฒเตเดเดจเดคเตเดคเดฟเดจเตเดฑเต เดตเตเดฏเดพเดชเตเดคเดฟ. เดเดคเต เดฐเดธเดเดฐเดตเตเด เดเดชเดฏเตเดเดชเตเดฐเดฆเดตเตเดฎเดพเดฃเตเดเตเดเดฟเตฝ, เด
เดชเตเดชเดพเดเตเดเต เดเดฏเตผเดซเตเดฒเตเดฏเตโเดเตเดเดพเดฏเตเดณเตเดณ ETL เดชเดฐเดฟเดนเดพเดฐเดเตเดเดณเตเด เด
เดตเดฏเตเดเต เดญเดพเดเดเตเดเดณเตเด เดตเดฟเดตเดฐเดฟเดเตเดเตเดจเตเดจเดคเต เดเดพเตป เดธเดจเตเดคเตเดทเดคเตเดคเตเดเต เดคเตเดเดฐเตเด.
เด เดตเดฒเดเดฌเด: www.habr.com