| | import logging
|
| | import os
|
| | from datetime import datetime
|
| |
|
| | import requests
|
| |
|
| | from pytz import timezone
|
| |
|
| | from .timezone import my_timezone
|
| |
|
| | _source = 'USE YOURS'
|
| | _target = 'USE YOURS'
|
| |
|
| | log = logging.getLogger()
|
| |
|
| | _fmt = "%Y-%m-%d %H:%M:%S %Z%z"
|
| |
|
| |
|
| | class EmailSender:
|
| |
|
| | def __init__(self, exp_id: str, enable: bool):
|
| | self.exp_id = exp_id
|
| | self.enable = enable
|
| | if enable:
|
| | load_dotenv()
|
| | self.MAILGUN_API_KEY = os.getenv('MAILGUN_API_KEY')
|
| | if self.MAILGUN_API_KEY is None:
|
| | log.warning('MAILGUN_API_KEY is not set')
|
| | self.enable = False
|
| |
|
| | def send(self, subject, content):
|
| | if self.enable:
|
| | subject = str(subject)
|
| | content = str(content)
|
| | try:
|
| | return requests.post(f'https://api.mailgun.net/v3/{_source}/messages',
|
| | auth=('api', self.MAILGUN_API_KEY),
|
| | data={
|
| | 'from':
|
| | f'<agent name>🤖 <mailgun@{_source}>',
|
| | 'to': [f'{_target}'],
|
| | 'subject':
|
| | f'[{self.exp_id}] {subject}',
|
| | 'text':
|
| | ('\n\n' + content + '\n\n<your sign off>\n' +
|
| | datetime.now(timezone(my_timezone)).strftime(_fmt)),
|
| | },
|
| | timeout=20)
|
| | except Exception as e:
|
| | log.error(f'Failed to send email: {e}')
|
| |
|