Skip to main content

Here’s a more concise and focused README.md tailored specifically for the PyPI package, including a link to the GitHub repository for detailed documentation.


MailShip

PyPI version
MailShip is a Python library designed to simplify Gmail automation for developers and testers. It offers tools for email generation, email content extraction, and seamless integration with CI/CD pipelines and testing frameworks.

Features

  • Generate unique email addresses for testing.
  • Wait for and retrieve emails in real time.
  • Extract tokens and links from email content.
  • Perform regex-based searches on email content.
  • Automatically refresh Gmail API tokens via cron jobs or pipelines.
  • CI/CD ready with GitHub Actions integration.

Installation

Install the library using pip:

pip install mailship

Configuration

Before using MailShip, you need to set up a Google Cloud project and configure OAuth credentials. Follow the steps below:

Step 1: Create a Google Cloud Project

  1. Visit the Google Cloud Console.
  2. Click on the project selector at the top and choose "New Project."
  3. Enter a name for your project (e.g., "MailShip") and click "Create."
  4. Select your new project from the project dropdown once it's created.

Step 2: Enable the Gmail API

  1. Go to "APIs & Services" > "Library" in the left sidebar.
  2. Search for "Gmail API" and select it.
  3. Click "Enable" to activate the API for your project.

Step 3: Configure the OAuth Consent Screen

  1. Navigate to "APIs & Services" > "OAuth consent screen."
  2. Select "External" (or "Internal" for Google Workspace accounts).
  3. Fill in the following fields:
    • App Name: MailShip
    • User Support Email: Your email address
    • Developer Contact Information: Your email address
  4. Add these required scopes on the "Scopes" page:
  5. Save the settings and add your Gmail account under "Test Users."

Step 4: Create an OAuth 2.0 Client ID

  1. Go to "APIs & Services" > "Credentials."
  2. Click "Create Credentials" > "OAuth client ID."
  3. Choose "Desktop app" as the application type.
  4. Name the client (e.g., "MailShip Desktop Client") and click "Create."
  5. Download the client_secrets.json file and place it in your project directory.

Getting Started

After getting your credentials, you can initialize the setup process:

Run one of the following commands to set up your Gmail API credentials:

Option 1: Setup Gmail Authentication

Run the following command to set up your Gmail API credentials without automatic token refreshing setup.

Note: TOkens would expire if app is not used for long periods of time

mail-ship-setup

This will guide you through the setup process, including storing credentials and setting environment variables.

Option 2: Set Up Automatic Token Refreshing (Linux)

  • To set up a cron job (Linux/macOS) for automatic token refreshing, run:
    mail-ship-setup --setup-cron
    

Option 3: Set Up Automatic Token Refreshing (Windows)

  • To set up a scheduled task (Windows), run:
    mail-ship-setup --setup-task
    

For more detailed setup instructions, visit the GitHub repository.


Basic Usage

Here’s a quick example of how to use MailShip:

from mailship import GmailAutomator

automator = GmailAutomator(verbose=True)

# Generate a unique email for testing
email = automator.generate_email()
print(f"Generated email: {email}")

# Wait for an email
received_email = automator.wait_for_email(email, timeout=120)

if received_email:
    print(f"Received email: {received_email['subject']}")
    # Extract a token from the email
    token = automator.extract_token(received_email)
    print(f"Extracted token: {token}")
else:
    print("No email received within the timeout period.")

CI/CD Integration

MailShip is designed to work seamlessly in CI/CD pipelines. Add the following step in your GitHub Actions workflow to refresh Gmail API tokens:

- name: Refresh Tokens
  env:
    GMAIL_CLIENT_ID: ${{ secrets.GMAIL_CLIENT_ID }}
    GMAIL_CLIENT_SECRET: ${{ secrets.GMAIL_CLIENT_SECRET }}
    GMAIL_AUTH_REFRESH_TOKEN: ${{ secrets.GMAIL_AUTH_REFRESH_TOKEN }}
    GMAIL_AUTH_SALT: ${{ secrets.GMAIL_AUTH_SALT }}
  run: python -m mailship.setup_auth --refresh-tokens

Documentation

For detailed documentation, advanced features, and contributing guidelines, visit the GitHub repository.


License

This project is licensed under a Custom Repository License. See the GitHub repository for details.


Contact

For questions or support, reach out on:


This README.md is concise, focused on installation and usage, and directs users to the GitHub repository for in-depth information. Let me know if you’d like further refinements!

Metadata

Release files for mailship 1.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mailship 1.0.3
File Size Uploaded
mailship-1.0.3.tar.gz 20.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mailship 1.0.3
File Interpreter ABI Platform
mailship-1.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 39.8 kB

Release files / mailship-1.0.3.tar.gz

Download URL mailship-1.0.3.tar.gz
Size 20.7 kB
Tags Source
SHA-256 checksum
How to use checksums
36d114b230e9661c3cf260a394966401660f2aff2601fefe906b7bbdc8f7eb75
BLAKE2b-256 checksum
How to use checksums
2a479c68358810669183626c82034168f99ed322218fd9cd7d3da1cb8a73c606
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.5

Release files / mailship-1.0.3-py3-none-any.whl

Download URL mailship-1.0.3-py3-none-any.whl
Size 19.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
93a03b96f74b5d17970adcb4549531f30d1ff35ffa5c5b9082854211adc3fdc3
BLAKE2b-256 checksum
How to use checksums
f23997fd6c481d15a48dffb8fdb957ff48e76a8f2bce2661d911b9b935a3c787
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.5

Release history Release notifications | RSS feed

This release

1.0.3 This release

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page