| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | 
							- from typing import Optional
 
- import resend
 
- from flask import Flask
 
- class Mail:
 
-     def __init__(self):
 
-         self._client = None
 
-         self._default_send_from = None
 
-     def is_inited(self) -> bool:
 
-         return self._client is not None
 
-     def init_app(self, app: Flask):
 
-         if app.config.get('MAIL_TYPE'):
 
-             if app.config.get('MAIL_DEFAULT_SEND_FROM'):
 
-                 self._default_send_from = app.config.get('MAIL_DEFAULT_SEND_FROM')
 
-             if app.config.get('MAIL_TYPE') == 'resend':
 
-                 api_key = app.config.get('RESEND_API_KEY')
 
-                 if not api_key:
 
-                     raise ValueError('RESEND_API_KEY is not set')
 
-                 
 
-                 api_url = app.config.get('RESEND_API_URL')
 
-                 if api_url:
 
-                     resend.api_url = api_url
 
-                 resend.api_key = api_key
 
-                 self._client = resend.Emails
 
-             else:
 
-                 raise ValueError('Unsupported mail type {}'.format(app.config.get('MAIL_TYPE')))
 
-     def send(self, to: str, subject: str, html: str, from_: Optional[str] = None):
 
-         if not self._client:
 
-             raise ValueError('Mail client is not initialized')
 
-         if not from_ and self._default_send_from:
 
-             from_ = self._default_send_from
 
-         if not from_:
 
-             raise ValueError('mail from is not set')
 
-         if not to:
 
-             raise ValueError('mail to is not set')
 
-         if not subject:
 
-             raise ValueError('mail subject is not set')
 
-         if not html:
 
-             raise ValueError('mail html is not set')
 
-         self._client.send({
 
-             "from": from_,
 
-             "to": to,
 
-             "subject": subject,
 
-             "html": html
 
-         })
 
- def init_app(app: Flask):
 
-     mail.init_app(app)
 
- mail = Mail()
 
 
  |