|
|
|
|
@ -1,6 +1,35 @@ |
|
|
|
|
from email.utils import format_datetime |
|
|
|
|
import requests |
|
|
|
|
from datetime import datetime |
|
|
|
|
|
|
|
|
|
from django.core.management.base import BaseCommand |
|
|
|
|
from django.conf import settings |
|
|
|
|
import requests |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_logs(limit, date, subject): |
|
|
|
|
r = requests.get( |
|
|
|
|
"https://api.mailgun.net/v3/%s/events" % settings.ANYMAIL['MAILGUN_SENDER_DOMAIN'], |
|
|
|
|
auth=("api", settings.ANYMAIL['MAILGUN_API_KEY']), |
|
|
|
|
params={"begin": format_datetime(date), |
|
|
|
|
"ascending": "yes", |
|
|
|
|
"limit": limit, |
|
|
|
|
"pretty": "yes", }) |
|
|
|
|
print(r) |
|
|
|
|
if r.status_code != 200: |
|
|
|
|
print('r.content', r.content) |
|
|
|
|
return |
|
|
|
|
messages = r.json() |
|
|
|
|
try: |
|
|
|
|
print("len(messages['items'])", len(messages['items'])) |
|
|
|
|
no_attach = list(filter( |
|
|
|
|
lambda i: 'message' in i and i['message']['headers']['subject'] == subject and not len( |
|
|
|
|
i['message']['attachments']), messages['items'])) |
|
|
|
|
print("len(no_attach)", len(no_attach)) |
|
|
|
|
emails = [m['message']['headers']['to'] for m in no_attach] |
|
|
|
|
return emails, datetime.utcfromtimestamp(sorted(no_attach, key=lambda i: i['timestamp'], reverse=True)[0]['timestamp']) |
|
|
|
|
except Exception as e: |
|
|
|
|
print('r.content', r.content) |
|
|
|
|
print(e) |
|
|
|
|
|
|
|
|
|
class Command(BaseCommand): |
|
|
|
|
help = 'Get animail logs' |
|
|
|
|
@ -13,7 +42,7 @@ class Command(BaseCommand): |
|
|
|
|
dest='limit', |
|
|
|
|
help='Limit', |
|
|
|
|
) |
|
|
|
|
'''parser.add_argument( |
|
|
|
|
parser.add_argument( |
|
|
|
|
'--date', |
|
|
|
|
dest='date', |
|
|
|
|
help='Date', |
|
|
|
|
@ -22,30 +51,15 @@ class Command(BaseCommand): |
|
|
|
|
'--subject', |
|
|
|
|
dest='subject', |
|
|
|
|
help='Subject', |
|
|
|
|
)''' |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
def handle(self, *args, **options): |
|
|
|
|
print('MAILGUN_API_KEY', settings.ANYMAIL['MAILGUN_API_KEY']) |
|
|
|
|
print('MAILGUN_SENDER_DOMAIN', settings.ANYMAIL['MAILGUN_SENDER_DOMAIN']) |
|
|
|
|
r = requests.get( |
|
|
|
|
"https://api.mailgun.net/v3/%s/events" % settings.ANYMAIL['MAILGUN_SENDER_DOMAIN'], |
|
|
|
|
auth=("api", settings.ANYMAIL['MAILGUN_API_KEY']), |
|
|
|
|
params={"begin": "Wed, 10 Jul 19 00:00:00 +0000", #options.get('date') |
|
|
|
|
"ascending": "yes", |
|
|
|
|
"limit": options.get('limit'), |
|
|
|
|
"pretty": "yes", }) |
|
|
|
|
print(r) |
|
|
|
|
if r.status_code != 200: |
|
|
|
|
print('r.content', r.content) |
|
|
|
|
return |
|
|
|
|
messages = r.json() |
|
|
|
|
try: |
|
|
|
|
print("len(messages['items'])", len(messages['items'])) |
|
|
|
|
no_attach = list(filter(lambda i: i['message']['headers']['subject'] == 'Грамота от Lil School' and not len( #options.get('subject') |
|
|
|
|
i['message']['attachments']), messages['items'])) |
|
|
|
|
print("len(no_attach)", len(no_attach)) |
|
|
|
|
print([m['message']['headers']['to'] for m in no_attach]) |
|
|
|
|
except Exception as e: |
|
|
|
|
print('r.content', r.content) |
|
|
|
|
raise e |
|
|
|
|
emails = [] |
|
|
|
|
end_dt = datetime(2019, 7, 11) |
|
|
|
|
current_dt = options.get('date') |
|
|
|
|
while current_dt <= end_dt: |
|
|
|
|
e, current_dt = get_logs(options.get('limit'), current_dt, options.get('subject')) |
|
|
|
|
emails += e |
|
|
|
|
print(set(emails)) |
|
|
|
|
print(current_dt) |
|
|
|
|
|
|
|
|
|
|