+
    Ji                        R t ^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHt R.tR	tR
tR tRR lt]R8X  d   ]! ]P.                  4      ^8  d   ]! R4       ]P2                  ! ^4       ]P.                  ^,          t]P.                  ^,          t]! ]P.                  4      ^8  d   ]P.                  ^,          MRt]! R]]]4      t]! R]R,           24       R# R# )z]
Rob Lobster Email Sender
WHITELIST: Only sends to approved addresses. NEVER to anyone else.
N)MIMEText)MIMEMultipart)MIMEBase)encoders)Credentials)buildzjlynch@tlcnj.comz>/Users/joemac/.openclaw/workspace/config/gmail/token-send.jsonz9/Users/joemac/.openclaw/workspace/config/gmail/token.jsonc            	        ^ RI p ^ RIHp V P                  P	                  \
        4      '       d   \
        M\        p\        V4      ;_uu_ 4       p\        P                  ! V4      pRRR4       RR.p\        XP                  RVP                  R4      4      VR,          VR,          VR	,          VR
,          VR7      pVP                  '       gr   VP                  V! 4       4       VP                  VR&   VP                  VR&   WTR&   \        \
        R4      ;_uu_ 4       p\        P                  ! WC^R7       RRR4       \!        RRVR7      #   + '       g   i     L; i  + '       g   i     L1; i)zDUse dedicated send token file so readonly cron doesn't overwrite it.N)Requestz*https://www.googleapis.com/auth/gmail.sendz.https://www.googleapis.com/auth/gmail.readonlyaccess_tokentokenrefresh_token	token_uri	client_idclient_secret)r   r   r   r   r   scopesr   w)indentgmailv1)credentials)osgoogle.auth.transport.requestsr	   pathexistsSEND_TOKEN_FILEREAD_TOKEN_FILEopenjsonloadr   getvalidrefreshr   dumpr   )r   r	   
token_filef
token_dataSEND_SCOPEScredss          7/Users/joemac/.openclaw/workspace/scripts/send_email.pyget_servicer)      s   6$&GGNN?$C$CJ	j		QYYq\
 
 	58K
 nn^Z^^G-DE 1[)[) 1E ;;;gi #kk
7%*[[
>"*8/3''1IIjA. ( $E225 
	. ('s   E E"E	"E2	c                2   V \         9  d   \        RV  R\          24      hV'       d   \        4       pVP                  \	        V4      4       ^ RIpVP                  P                  V4      p\        VR4      ;_uu_ 4       p\        RR4      pVP                  VP                  4       4       RRR4       \        P                  ! X4       VP                  RRV 24       VP                  V4       M\	        V4      pWR	&   R
VR&   WR&   \        4       p	\         P"                  ! VP%                  4       4      P'                  4       p
V	P)                  4       P+                  4       P-                  RRV
/R7      P/                  4       pV#   + '       g   i     L; i)z*Send email. ONLY to whitelisted addresses.z	BLOCKED: z# is not in the approved whitelist: Nrbapplicationzoctet-streamzContent-Dispositionzattachment; filename=tozrob.lobster.claw@gmail.comfromsubjectmeraw)userIdbody)	WHITELIST
ValueErrorr   attachr   r   r   basenamer   r   set_payloadreadr   encode_base64
add_headerr)   base64urlsafe_b64encodeas_bytesdecodeusersmessagessendexecute)r-   r/   r3   attachment_pathmessager   filenamer$   partservicer1   results   &&&&        r(   
send_emailrJ   :   sO   	9RD(KI;WXX/x~&77##O4/4((AM>:DQVVX& ) 	t$-1Fxj/QRt4.DM2GFO ImG

"
"7#3#3#5
6
=
=
?C]]_%%',,S\ -  gi 
 M) )(s    ,FF	__main__z7Usage: send_email.py <subject> <body> [attachment_path]z
Sent! ID: id)N)__doc__r   r<   sysemail.mime.textr   email.mime.multipartr   email.mime.baser   emailr   google.oauth2.credentialsr   googleapiclient.discoveryr   r4   r   r   r)   rJ   __name__lenargvprintexitr/   r3   
attachmentrI        r(   <module>r]      s   
   
 $ . $  1 +   	RM!3FB z
388}qGHhhqkG88A;D #CHH 1!tJ*GT:FF	Jvd|n
%& r\   