faux-synth 0.1.3
A package for generating mails and addresses
License: MIT

# FauxSynth
[![GitHub issues](https://img.shields.io/github/issues/FelixSmtt/FauxSynth)](https://github.com/FelixSmtt/FauxSynth/issues) [![GitHub stars](https://img.shields.io/github/stars/FelixSmtt/FauxSynth)](https://github.com/FelixSmtt/FauxSynth/stargazers) [![PyPI version](https://badge.fury.io/py/faux-synth.svg)](https://badge.fury.io/py/faux-synth)

![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)

The Python package for generating addresses, temporary emails, and more.
It scrapes the data from the internet and generates fake data for you.

## Table of Contents

- [Installation](#installation)
- [Usage](#usage)
  - [Random Address](#random-address)
  - [Temporary Email](#temporary-email)
    - [Receive Emails](#receive-emails) 


## Installation

Download this repository and run the following command in the terminal to install the required packages.

```bash
pip install faux-synth
```

## Usage

### Random Address

FauxSynth provides multiple `AddressGenerators` present in `FauxSynth.address` module. 
Each `AddressGenerator` can generate multiple addresses from different countries.

In this example we will use the `BestRandoms` address generator to generate random addresses from the United States.

```python
from FauxSynth.address import BestRandoms
from FauxSynth.types import Country

# Create an instance of the AddressGenerator
address_generator = BestRandoms(Country.UnitedStates)

# Generate a random address
address = address_generator.get_address()
print(address)

# Generate multiple addresses
addresses = address_generator.get_addresses(5)
print(addresses)

# Access the address fields
print(address.street)

```

### Temporary Email

FauxSynth provides multiple `MailHandler` present in `FauxSynth.mail` module.
Each `MailHandler` can generate temporary emails.

In this example we will use the `FakeMail` mail handler to generate a temporary email.

```python
from FauxSynth.mail import FakeMail

mail_handler = FakeMail()
# FakeMail automatically has a random address. 
# You can access it using the `address` property.
print(mail_handler.address)

# You can also generate a new random address by creating a new generator.
# Or claim a new address with `claim_mail()`
# Also check if the address is available with `check_mail()`
new_address = "max.mustermann"
if mail_handler.check_mail(new_address):
    mail_handler.claim_mail(new_address)
    print(mail_handler.address)
else:
    print("Address already taken")
```

#### Receive Emails

To receive Emails using a `MailHandler` you can use the `refresh()` method.
This method will refresh the inbox and saves the new emails in the `mails` property.

The `mails` property is a list of `Mail` objects. Each `Mail` object has the following properties:

- `sender`: The sender of the email
- `subject`: The subject of the email
- `body`: The body of the email (Needs to be loaded with `load_body()`)

```python
from FauxSynth.mail import FakeMail

mail_handler = FakeMail()
print(f"Current Mail Address: {mail_handler.address}")

# Refresh the inbox
mail_handler.refresh()

# Print the mails
for mail in mail_handler.mails:
    print(f"Sender: {mail.sender}")
    print(f"Subject: {mail.subject}")
    
    mail.load_body()
    print(f"Body: {mail.body}")
    print("")
```

There is also the `wait_for_mail()` method. 
This method will automatically refresh and wait for a new email to arrive.

```python
from FauxSynth.mail import FakeMail

mail_handler = FakeMail()

# Wait for a new email
new_mail = mail_handler.wait_for_mail(timeout=60, interval=2)
```