|
from requests import Session |
|
from string import ascii_letters |
|
from random import choices |
|
|
|
class Mail: |
|
def __init__(self, proxies: dict = None) -> None: |
|
self.client = Session() |
|
self.client.proxies = proxies |
|
self.client.headers = { |
|
"host": "api.mail.tm", |
|
"connection": "keep-alive", |
|
"sec-ch-ua": "\"Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111\"", |
|
"accept": "application/json, text/plain, */*", |
|
"content-type": "application/json", |
|
"sec-ch-ua-mobile": "?0", |
|
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36", |
|
"sec-ch-ua-platform": "\"macOS\"", |
|
"origin": "https://mail.tm", |
|
"sec-fetch-site": "same-site", |
|
"sec-fetch-mode": "cors", |
|
"sec-fetch-dest": "empty", |
|
"referer": "https://mail.tm/", |
|
"accept-encoding": "gzip, deflate, br", |
|
"accept-language": "en-GB,en-US;q=0.9,en;q=0.8" |
|
} |
|
|
|
def get_mail(self) -> str: |
|
token = ''.join(choices(ascii_letters, k=14)).lower() |
|
init = self.client.post("https://api.mail.tm/accounts", json={ |
|
"address" : f"{token}@bugfoo.com", |
|
"password": token |
|
}) |
|
|
|
if init.status_code == 201: |
|
resp = self.client.post("https://api.mail.tm/token", json = { |
|
**init.json(), |
|
"password": token |
|
}) |
|
|
|
self.client.headers['authorization'] = 'Bearer ' + resp.json()['token'] |
|
|
|
return f"{token}@bugfoo.com" |
|
|
|
else: |
|
raise Exception("Failed to create email") |
|
|
|
def fetch_inbox(self): |
|
return self.client.get(f"https://api.mail.tm/messages").json()["hydra:member"] |
|
|
|
def get_message(self, message_id: str): |
|
return self.client.get(f"https://api.mail.tm/messages/{message_id}").json() |
|
|
|
def get_message_content(self, message_id: str): |
|
return self.get_message(message_id)["text"] |
|
|
|
|