IQgddlZddlZddlZddlZddlZddlmZm Z ddl m Z ddl m Z ddlmZdZGddeZGd d ZdS) N)base multipart) SysLogHandler)Optional)errorzAleksandr ShyshatskyceZdZdS)MailSendFailedN)__name__ __module__ __qualname__t/builddir/build/BUILD/imunify360-venv-2.5.0/opt/imunify360/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|tjtjtjd5}||d}|jdkrtj|j|| ddddS#1swxYwYdS#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_messagecmdprocr-exs r_sendmail_consolezMailHelper._sendmail_console*sh 2 ,MMOO22=AA MMOO 555C! o!!  V )))44Q7?a''$7fUUU( V V V V V V V V V V V V V V V V V V67 2 2 2 R))r 1 2s=A9C;AC > C CCCCD.D  Dcx 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) smtplibSMTPr0r1sendmailquit SMTPException socketerrorr r9)r% from_addrto_addrsr)r* smtp_instancer:r=s r_sendmail_smtpzMailHelper._sendmail_smtpEs 2#L55M ,MMOO22=AA MMOO  " "9h B B B    %{3 2 2 2 R))r 1 2sA=BB9B44B9rGc|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%rGr)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$rSrTrJr r> exceptionrr9)r%rGrHr)r*smtp_exceptions rrCzMailHelper.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 r r __doc__r( mime_baseMIMEBaserr9r>rJr MIMEMultipartrTrCr rrrrs@@ ( ( (22Y%72QT 2222622hsm2222&GG93JGGGG55 555555rr) email.utilsrOrrrAr2 email.mimerrYrlogging.handlersrtypingr_socketrrF __author__ Exceptionr rr rrrcs 33333333******(((((( #      Y   Z5Z5Z5Z5Z5Z5Z5Z5Z5Z5r