HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/django/core/mail/backends/__pycache__/smtp.cpython-310.pyc
o

�a��@s`dZddlZddlZddlZddlmZddlmZddlm	Z	ddl
mZGdd�de�ZdS)	zSMTP email backend class.�N)�settings)�BaseEmailBackend��sanitize_address)�DNS_NAMEcsTeZdZdZ			d�fdd�	Zedd��Zdd	�Zd
d�Zdd
�Z	dd�Z
�ZS)�EmailBackendz=
    A wrapper that manages the SMTP network connection.
    NFcs�t�j|d�|ptj|_|ptj|_|durtjn||_|dur$tj	n||_
|dur.tjn||_|dur8tj
n||_|durBtjn||_|	durLtjn|	|_|
durVtjn|
|_|jrc|jrctd��d|_t��|_dS)N)�
fail_silentlyz^EMAIL_USE_TLS/EMAIL_USE_SSL are mutually exclusive, so only set one of those settings to True.)�super�__init__r�
EMAIL_HOST�host�
EMAIL_PORT�port�EMAIL_HOST_USER�username�EMAIL_HOST_PASSWORD�password�
EMAIL_USE_TLS�use_tls�
EMAIL_USE_SSL�use_ssl�
EMAIL_TIMEOUT�timeout�EMAIL_SSL_KEYFILE�ssl_keyfile�EMAIL_SSL_CERTFILE�ssl_certfile�
ValueError�
connection�	threading�RLock�_lock)�selfrrrrrrrrrr�kwargs��	__class__��@/usr/lib/python3/dist-packages/django/core/mail/backends/smtp.pyr
s �zEmailBackend.__init__cCs|jrtjStjS)N)r�smtplib�SMTP_SSL�SMTP�r"r&r&r'�connection_class%szEmailBackend.connection_classcCs�|jrdSdt��i}|jdur|j|d<|jr"|�|j|jd��z/|j|j	|j
fi|��|_|js@|jr@|jj|j|jd�|j
rO|jrO|j�|j
|j�WdSty_|js\�YdSw)z�
        Ensure an open connection to the email server. Return whether or not a
        new connection was required (True or False) or None if an exception
        passed silently.
        F�local_hostnameNr)�keyfile�certfileT)rr�get_fqdnrr�updaterrr,rrr�starttlsrr�login�OSErrorr)r"�connection_paramsr&r&r'�open)s,

���zEmailBackend.openc	Cs�|jdurdSz8z|j��Wn$tjtjfy!|j��Yntjy3|jr2YWd|_dS�wWd|_dSWd|_dSd|_w)z)Close the connection to the email server.N)	r�quit�ssl�SSLErrorr(�SMTPServerDisconnected�close�
SMTPExceptionrr+r&r&r'r;Ks"

���
�zEmailBackend.closecCs�|sdS|j�=|��}|jr|dur	Wd�dSd}|D]
}|�|�}|r-|d7}q |r<|��Wd�|SWd�|S1sGwY|S)zm
        Send one or more EmailMessage objects and return the number of email
        messages sent.
        rN�)r!r6r�_sendr;)r"�email_messages�new_conn_created�num_sent�message�sentr&r&r'�
send_messages^s,�
�

�
�
�
�
zEmailBackend.send_messagescs�|��sdS|jptj�t|j��}�fdd�|��D�}|��}z|j�|||j	dd��WdSt
jy?|js<�YdSw)z-A helper method that does the actual sending.Fcsg|]}t|���qSr&r)�.0�addr��encodingr&r'�
<listcomp>zsz&EmailBackend._send.<locals>.<listcomp>z
)�linesepT)
�
recipientsrHr�DEFAULT_CHARSETr�
from_emailrBr�sendmail�as_bytesr(r<r)r"�
email_messagerMrKrBr&rGr'r>ts��zEmailBackend._send)
NNNNNFNNNN)�__name__�
__module__�__qualname__�__doc__r
�propertyr,r6r;rDr>�
__classcell__r&r&r$r'rs�
"r)
rTr(r8r�django.confr�django.core.mail.backends.baser�django.core.mail.messager�django.core.mail.utilsrrr&r&r&r'�<module>s