File: //opt/alt/python37/lib/python3.7/site-packages/clcommon/__pycache__/mail_helper.cpython-37.pyc
B
�䥣ݿD� @ s� d dl mZmZmZ d dlZd dlZd dlZd dlZd dl Z d dl
mZm
Z
d dlmZ d dlmZ d dlmZ dZG dd � d e�ZG d
d� d�ZdS )� )�absolute_import�division�print_functionN)�base� multipart)�
SysLogHandler)�Optional)�errorzAleksandr Shyshatskyc @ s e Zd ZdS )�MailSendFailedN)�__name__�
__module__�__qualname__� r r ��/builddir/build/BUILDROOT/alt-python27-cllib-3.4.1-1.el9.cloudlinux.x86_64/opt/alt/python37/lib/python3.7/site-packages/clcommon/mail_helper.pyr
s r
c @ sj e Zd ZdZdd� Zdejee d�dd�Z dee d�d d
�Z
eejd�dd
�Z
dee d�dd�ZdS )�
MailHelperz6Common class to send emails via local smtp or sendmailc C sh t jjsZtj�d�rRtdtjd�}t j�|� t j dd�}|�
|� |�t j� nt �
� t �� | _d S )Nz/dev/log)ZaddressZfacilityz3mail_helper: (%(name)s) [%(levelname)s] %(message)s)Zfmt)�logging�rootZhandlers�os�path�existsr Z
LOG_DAEMONZ
addHandlerZ FormatterZsetFormatterZsetLevelZERRORZbasicConfigZ getLogger�_log)�selfZSYS_LOGZ
formatter_sysr r r �__init__! s
zMailHelper.__init__N)�msg�
encoding_namec
C s� yl|r|� � �|�}n|� � }dddg}tj|tjtjtjdd�}|�|�d }|jdkrjt�|j||��W n4 ttjfk
r� } zt t
|���W dd}~X Y nX dS )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)�stdin�stdout�stderr�textr N)� as_string�encode�
subprocess�Popen�PIPEZcommunicate�
returncodeZCalledProcessError�OSErrorr
�str)r r r � s_message�cmd�pr �exr r r �_sendmail_console- s
zMailHelper._sendmail_console)r c
C sz y@t �d�}|r |�� �|�}n|�� }|�|||� |�� W n4 t jtfk
rt } ztt |���W dd}~X Y nX dS )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
Z localhostN)
�smtplibZSMTPr r �sendmail�quitZ
SMTPException�socketerrorr
r&