рд╣реЗрд▓реЛ, рд╣реЗрдмреНрд░!
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдИрдореЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХрдорд╛рдВрдб рдХреЛ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдореЙрди рдмрдирд╛рдиреЗ рдореЗрдВ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдкрд░рд┐рдЪрдп
рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рдореИрдВ рдХрдИ рд░рд┐рдореЛрдЯ рдорд╢реАрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЕрдХреНрд╕рд░, рдЙрди рддрдХ рдкрд╣реБрдВрдЪ рдЖрдИрдкреА рдлрд╝рд┐рд▓реНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдорд╢реАрди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдЬрдмрд╛рдиреЛрдВ рд╕реЗ рд▓рдВрдмреА рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЗрд╕ рдЦреЛрдЬ рдХреЛ рдПрдХ рдмрд╛рд░ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ-рджреЛ рдЖрдЬреНрдЮрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдХреБрдЫ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдмреЗрд╢рдХ, рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдПрдХ рд╕реАрдзрд╛ рдПрд╕рдПрд╕рдПрдЪ рд╕реБрд░рдВрдЧ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕рднреА рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рд╕рдЦреНрдд рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐ рдЗрд╕реЗ рд░реЛрдХрддреА рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдореИрдВ рдПрдХ рд▓рдЪреАрд▓рд╛ рдФрд░ рд╕реНрд╡рддрдВрддреНрд░ рдкреНрд░рдгрд╛рд▓реА рд░рдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рд╕рдордп рдХреЗ рд╕рд╛рде, рдХрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдИрдВ:
- рд╕рд┐рд╕реНрдЯрдо рд╕реБрд░рдХреНрд╖рд╛;
- рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЗрд╢рд╛рд░реЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╕рд┐рд╕реНрдЯрдо рддрдХ рдЖрд╕рд╛рди рдкрд╣реБрдВрдЪ (рдлреЛрди, рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХрдВрдкреНрдпреВрдЯрд░, рдЖрджрд┐ рд╕реЗ);
- рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрдорд╛рдВрдб рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ред
рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рдж, рдореИрдВ рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪрд╛ рдХрд┐ рдИ-рдореЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдмреЙрдЯ рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╕рдорд╛рдзрд╛рди рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЖрдЬрдХрд▓, рдЖрдк рдХрд┐рд╕реА рднреА рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдИ-рдореЗрд▓ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░реАрди рдФрд░ рдХреАрдмреЛрд░реНрдб (рдХрдВрдкреНрдпреВрдЯрд░, рдлреЛрди, рдХрд┐рдВрдбрд▓, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЯреАрд╡реА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ)ред рдкрддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА рд╣рдореЗрд╢рд╛ рд╕рд░реНрд╡рд░ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрддреА рд╣реИ рдФрд░ рдЖрдк рд╕рд┐рд╕реНрдЯрдо рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдмреАрдЪ, рдЙрдкрдпреБрдХреНрдд рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдкрд╛рдпрдерди рдХреЛ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛, рдЪрдпрди рдорд╛рдирджрдВрдб рди рдХреЗрд╡рд▓ рднрд╛рд╖рд╛ рдХрд╛ рд▓рдЪреАрд▓рд╛рдкрди рдерд╛, рдмрд▓реНрдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдПрдХ рд▓рдВрдмреА рдЗрдЪреНрдЫрд╛ рднреА рдереАред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ:
- рдИ-рдореЗрд▓ рдХрдорд╛рдВрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
- рдХрдорд╛рди рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкрд░рд┐рдгрд╛рдо рднреЗрдЬрдирд╛
1. рдИ-рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рдХрдорд╛рдВрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕рд░реНрд╡рд░ рд╕реЗ рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: POP3 рдпрд╛ IMAP4ред рд╡рд┐рдХрд▓реНрдк рдореЗрд▓ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдорд░реНрдерд┐рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд░ рдФрд░ рд▓рдХреНрд╖реНрдп рдорд╢реАрди рдкрд░ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рдЦреБрд▓реЗрдкрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
POP3 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХрдиреЗрдХреНрд╢рди
if is_enabled(self.get_param_str("Mail", "USE_SSL")): session = poplib.POP3_SSL(self.get_param_str("Mail", "POP_SERVER"), self.get_param_int("Mail", "POP_SSL_PORT")) else: session = poplib.POP3(self.get_param_str("Mail", "POP_SERVER"), self.get_param_int("Mail", "POP_PORT"))
IMAP4 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХрдиреЗрдХреНрд╢рди
if is_enabled(self.get_param_str("Mail", "USE_SSL")): session = imaplib.IMAP4_SSL(self.get_param_str("Mail", "IMAP_SERVER"), self.get_param_int("Mail", "IMAP_SSL_PORT")) else: session = imaplib.IMAP4(self.get_param_str("Mail", "IMAP_SERVER"), self.get_param_int("Mail", "IMAP_PORT"))
рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рдмреЙрдЯ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд╕реЗ рд╕рднреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рддреАрди-рд╕реНрддрд░реАрдп рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛:
- рд╕рдВрджреЗрд╢ рдХреЗ рд╡рд┐рд╖рдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ;
- рд╕рдлреЗрдж рдФрд░ рдХрд╛рд▓реА рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░реЗрд╖рдХ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛;
- рд▓реЙрдЧрд┐рди + рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рд╛рдзрд┐рдХрд░рдгред
POP3 рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд┐рд╖рдп рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ: рдХреЗрд╡рд▓ рд╕рдВрджреЗрд╢ рд╣реЗрдбрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, "рд╡рд┐рд╖рдп:" рдлрд╝реАрд▓реНрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, рдпрджрд┐ рд╡рд┐рд╖рдп рд╕рд╣реА рд╣реИ, рддреЛ рд╣рдо рд╕рдВрджреЗрд╢ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЖрдЧреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рднреЗрдЬрддреЗ рд╣реИрдВред
numMessages = len(session.list()[1]) for i in range(numMessages): m_parsed = Parser().parsestr("\n".join(session.top(i+1, 0)[1])) if self.get_param_str('Main', 'SUBJECT_CODE_PHRASE') == m_parsed['subject']:
IMAP рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рд╣реИ, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╡рд┐рд╖рдп рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рд╕рд░реНрд╡рд░ рдЦреБрдж рд╣рдореЗрдВ рд╕рднреА рдЙрдкрдпреБрдХреНрдд рдкрддреНрд░ рджреЗрдЧрд╛ред
session.select(self.get_param_str('Mail', 'IMAP_MAILBOX_NAME')) typ, data = session.search(None, 'SUBJECT', self.get_param_str("Main", "SUBJECT_CODE_PHRASE"))
рдЕрдЧрд▓рд╛ рдХрджрдо рдкреНрд░реЗрд╖рдХ рдХреЛ рд╕рдлреЗрдж рдФрд░ рдХрд╛рд▓реА рд╕реВрдЪрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рд╣реИ (рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)
рдФрд░ рдЕрдВрддрд┐рдо рдЧрдврд╝ рд▓реЙрдЧрд┐рди рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╣реИ: рдкрд╛рд╕рд╡рд░реНрдб рдЬреЛрдбрд╝реА, рдЬрд┐рд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкрддреНрд░ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рдмрдЬрд╛рдп, рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХреЗрд╡рд▓ md5 рд╣реИрд╢ рдЬрдорд╛ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
рд╣рд╛рдВ, рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реИ, рджреВрд╕рд░реА рдУрд░, рдХреНрдпрд╛ рд╣рдо рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрддреНрдпрдзрд┐рдХ рд╡реНрдпрд╛рдореЛрд╣ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
2. рдЖрдЬреНрдЮрд╛рдУрдВ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди
рдЪреВрдВрдХрд┐ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдХрдорд╛рдВрдбреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб рдХреЛ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдКрдкрд░ рд╕реЗ рд╕рдХреНрд░рд┐рдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рднреА рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдордирдорд╛рдирд╛ рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдиреБрдХрд╕рд╛рди рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдкреНрд░реЛрдЧреНрд░рд╛рдо (рдПрдорд╕реА, рд╣реЙрдкреНрдЯ, рдЖрджрд┐) рдЪрд▓рд╛рдХрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдореБрдЭреЗ рдЕрднреА рддрдХ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реИред
3. рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рд╡рд╛рдкрд╕ рднреЗрдЬрдирд╛
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдорд╛рдВрдб рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рднреЗрдЬреА рдЬрд╛рдПрдЧреА рдЬрд┐рд╕рдореЗрдВ рдХрдорд╛рдВрдб рдХреЗ рд╕рднреА рдЖрдЙрдЯрдкреБрдЯ рдФрд░ рд░рд┐рдЯрд░реНрди рдХреЛрдб рд╣реЛрдВрдЧреЗред
Smtplib рдореЙрдбреНрдпреВрд▓ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
self.__send_lock.acquire() if not msg is None: print "[%s] Sending response to '%s'" % (datetime.today().strftime('%d/%m/%y %H:%M'), email_from) recipients = [email_from, self.get_param_str('Mail', 'SEND_COPY_TO')] message = "%s%s%s\n%s" % ('From: %s \n' % (self.get_param_str('Main', 'BOT_NAME')), 'To: %s \n' % (email_from), 'Subject: Report %s \n' % (datetime.today().strftime('%d/%m/%y %H:%M')), msg)
рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрдореЙрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдмреЙрдЯ рдХреЛ рдХрдорд╛рдВрдб рднреЗрдЬрддреЗ рд╣реИрдВ:

рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рд╣рдо рдЙрддреНрддрд░ рджреЗрдЦрддреЗ рд╣реИрдВ:
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдЬреАрдердм рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред
рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИред
UPD: рдмрд╣реБ-рднрд╛рдЧ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЧрд▓рдд рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рдмрдЧ рддрдп рдХрд┐рдпрд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ megres рдХреЛ рдзрдиреНрдпрд╡рд╛рдж githubред
UPD2: рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдордирдорд╛рдирд╛ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рд╛ред рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрд╕рд░реНрдЧ ": рд╕рдордп = x" рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЕрд░реНрдерд╛рддред ": рд╕рдордп = 10 рдмрдирд╛рддреЗ рд╣реИрдВ", рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП 10 рд╕реЗрдХрдВрдб рджреЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рд╢реВрдЯ рдХрд░реЗрдВрдЧреЗред
рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
tanenn ред