}CeddlmZmZmZddlZddlZddlZddlZddl Z ddl m Z m Z ddlmZddlmZddlmZdZGdd eZGd d ZdS) )absolute_importdivisionprint_functionN)base multipart) SysLogHandler)Optional)errorzAleksandr ShyshatskyceZdZdS)MailSendFailedN)__name__ __module__ __qualname__/builddir/build/BUILDROOT/alt-python27-cllib-3.3.7-2.el7.cloudlinux.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/mail_helper.pyr r sDrr ceZdZdZdZd dejdeefdZ d deefdZ dede j fd Z d deefd ZdS) MailHelperz6Common class to send emails via local smtp or sendmailctjjstjdrt dt j}tj|tj d}| || tj ntj tj|_dS)Nz/dev/log)addressfacilityz3mail_helper: (%(name)s) [%(levelname)s] %(message)s)fmt)loggingroothandlersospathexistsr LOG_DAEMON addHandler Formatter setFormattersetLevelERROR basicConfig getLogger_log)selfSYS_LOG formatter_syss r__init__zMailHelper.__init__!s|$ &w~~j)) &' ]E]^^^ ''000 ' 16k l l l $$]333  ////#%%%%'' rNmsg encoding_namec |r(||}n|}gd}tj|tjtjtjd}||d}|jdkrtj|j||dS#ttjf$r!}tt|d}~wwxYw)z Alternative function that should be called when we cannot send email via smtp :type msg: email.mime.base.MIMEBase :type encoding_name: encoding name to encode message text )z/usr/sbin/sendmailz-tz-oiT)stdinstdoutstderrtextrN) as_stringencode subprocessPopenPIPE communicate returncodeCalledProcessErrorOSErrorr str)r(r,r- s_messagecmdpr0exs r_sendmail_consolezMailHelper._sendmail_console-s * ,MMOO22=AA MMOO 555C JO(2(2&*,,,A]]9--a0F|q   3AL#vNNN! 67 * * * R)) ) *sB:B>>C5C00C5cv tjd}|r(||}n|}|||||dS#tjtf$r!}tt|d}~wwxYw)z Send email using smtp protocol; :type from_addr: str :type to_addrs: List[str] :type msg: email.mime.base.MIMEBase :type encoding_name: encoding name to encode message text localhostN) smtplibSMTPr3r4sendmailquit SMTPException socketerrorr r<)r( from_addrto_addrsr,r- smtp_instancer=r@s r_sendmail_smtpzMailHelper._sendmail_smtpEs *#L55M ,MMOO22=AA MMOO  " "9h B B B    %{3 * * * R)) ) *sA=BB8B33B8rJc|ds_tj|dd|d<|jd|ddSdS)z{Add Message-ID to message if it is missing :type from_addr: str :type msg: multipart.MIMEMultipart z Message-ID@)domainzAdded Message-ID: %sN)emailutils make_msgidsplitr'debug)r(rJr,s r_add_message_idzMailHelper._add_message_idXso <  G % 6 6iooc>R>RSU>V 6 W WC  IOO2C 4E F F F F F G Grc|jd|||||| |||||dS#t$r}|jd ||nQ#t$rD|jd|jt|Yn wxYwYd}~dSYd}~dSd}~wwxYw)a0 Try to send message using local smtp; If that can't be done - try to use /usr/sbin/sendmail; :type from_addr: str :type to_addrs: List[str] :type msg: multipart.MIMEMultipart :type encoding_name: Optional[str] encoding name to encode message text z+Trying to send mail with params: %s, %s, %sz-Smtp send failed, trying to send via sendmailzcCannot send email neither via smtp nor using sendmail; Please, check your mail server configurationN) r'rVrWrMr rA exceptionr r<)r(rJrKr,r-smtp_exceptions rrFzMailHelper.sendmailas4 EyRZ\_``` Y,,, 5    8S- H H H H H 5 5 5 IOOK L L L 5&&s++++! 5 5 5 ##%STTT N 3 344444 5,+++++544444 5s<A C,C'4B  C' A CC'CC''C,)N)r rr__doc__r+ mime_baseMIMEBaser r<rArMr MIMEMultipartrWrFrrrrrs@@ ( ( (**Y%7*QT ****0**hsm****&GG93JGGGG55 555555rr) __future__rrr email.utilsrRrrrDr5 email.mimerr\rlogging.handlersrtypingr _socketr rI __author__ Exceptionr rrrrrgsA@@@@@@@@@ 33333333******(((((( #      Y   W5W5W5W5W5W5W5W5W5W5r