o
    ~h                     @   sT   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 G dd deZ
dS )    N)MIMEText)BaseCommand)settings)EmailServicec                   @   s    e Zd ZdZdd Zdd ZdS )Commandz&Test email configuration in productionc                 C   s&   |j dtddd |j dddd d S )	Nz--emailzTest email address to send toztest@example.com)typehelpdefaultz
--detailed
store_truez-Show detailed configuration and test raw SMTP)actionr   )add_argumentstr)selfparser r   R/var/www/html/optinet_system/settings/management/commands/test_email_production.pyadd_arguments   s   
zCommand.add_argumentsc              
   O   s  |d }|d }| j | jd | j dttdd  | j dttdd  | j d	ttd
d  | j dttdd  | j dttddrRdnd  | j dttdd  | j d | j dtjdd  | j dtjdd  | j dtjddrdnd  | j d z8ddl	m
} |jjdd}|D ]&}d|jv r| j |j d|jrdnd  q| j |j d|j  qW n ty } z| j d|  W Y d }~nd }~ww |r[| j d z?ttjtj}	|	d |	  |	tjtj td}
d|
d< tj|
d < ||
d!< |	|
 |	  | j | jd" W n  tyZ } z| j | jd#|  W Y d }~nd }~ww | j d$ z,t }|j|d d%\}}|r| j | jd&|  n| j | jd'|  W n  ty } z| j | jd(|  W Y d }~nd }~ww | j d) zDdd*lm } |j!d+d d, }|D ]/}|j"d-krd.nd/}| j | d0|j# d1|j$ d1|j"  |j%r| j d2|j%  qW n ty } z| j d3|  W Y d }~nd }~ww | j d4 tjs%| j d5 tjs/| j d6 | j d7 | j d8 | j d9 d S ):Nemaildetailedz === Email Configuration Test ===zEMAIL_HOST: 
EMAIL_HOSTzNot setzEMAIL_PORT: 
EMAIL_PORTzEMAIL_USE_TLS: EMAIL_USE_TLSzEMAIL_HOST_USER: EMAIL_HOST_USERzEMAIL_HOST_PASSWORD: EMAIL_HOST_PASSWORD SetzDEFAULT_FROM_EMAIL: DEFAULT_FROM_EMAILz
=== Environment Variables ===z
Database email settings:r   )SystemSettings)categoryPASSWORDz: z#Could not fetch database settings: z$
=== Testing Raw SMTP Connection ===   z!Test email from production serverzProduction SMTP TestSubjectFromTou   ✅ Raw SMTP test successful!u   ❌ Raw SMTP test failed: z
=== Testing EmailService ===)recipient_emailsent_byu0   ✅ EmailService test successful! Email sent to u   ❌ EmailService test failed: u-   ❌ EmailService test failed with exception: z
=== Recent Email Logs ===)EmailLogz-sent_at   sentu   ✅u   ❌ z - z
   Error: zCould not fetch email logs: z
=== Recommendations ===u,   • Set EMAIL_HOST_USER environment variableu0   • Set EMAIL_HOST_PASSWORD environment variableu<   • For Gmail, use App Passwords instead of regular passwordu>   • Check firewall settings allow SMTP connections on port 587u=   • Verify SMTP server allows connections from your server IP)&stdoutwritestyleSUCCESSgetattrr   osenvirongetsettings.modelsr   objectsfilterkeyvalue	ExceptionsmtplibSMTPr   r   set_debuglevelstarttlsloginr   r   r   send_messagequitERRORr   send_test_emailnotifications.modelsr&   order_bystatussent_atr$   error_message)r   argsoptions
test_emailr   r   email_settingssettingeservermsgemail_servicesuccess	error_msgr&   recent_logslogstatus_iconr   r   r   handle   s   
"$
$




(zCommand.handleN)__name__
__module____qualname__r   r   rT   r   r   r   r   r   
   s    r   )r/   r8   email.mime.textr   django.core.management.baser   django.confr   notifications.email_servicer   r   r   r   r   r   <module>   s   